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 distincts. 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 simplement 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 trunk (si vous travaillez sur une branche) ou sur une branche spécifique (si vous travaillez sur le trunk), vous pouvez utiliser le menu contextuel de l'explorateur. Maintenez la touche Maj appuyée 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, par exemple deux étiquettes, ou une branche/étiquette et le tronc. Le menu contextuel vous permet alors de les comparer en utilisant Comparer les révisions. Plus d'informations dans la section intitulée « Comparer des dossiers ».

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 livrée et votre copie de travail, en supposant que la copie de travail n'ait pas été modifiée, faites simplement un clic droit sur le fichier. Ensuite, sélectionnez TortoiseSVNComparer avec la révision précédente. Ceci calculera les différences entre la révision avant la date de dernière livraison (comme sauvegardée dans votre copie de travail) et la BASE de travail. Ceci vous montre la dernière modification effectuée sur ce fichier et qui l'a amené à l'état dans lequel vous le voyez maintenant dans votre copie de travail. Ceci ne va pas montrer les modifications plus récentes que votre copie de travail.

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 modifiés dans ce dossier. Plus d'informations dans la section intitulée « Comparer des dossiers ».

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 de 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). Puis, à partir du menu contextuel de l'explorateur, sélectionnez TortoiseSVNVoir les différences.

Si les fichiers à comparer ne sont pas situés dans le même dossier, utilisez la commande TortoiseSVNComparer ultérieurement pour marquer le premier fichier comme à comparer, puis naviguez jusqu'au second fichier et utilisez TortoiseSVNComparer avec "chemin/du/fichier/marqué". Pour retirer la marque sur le premier fichier, utilisez la commande TortoiseSVNComparer ultérieurement une nouvelle fois, mais gardez le modificateur Ctrl appuyé en cliquant dessus.

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ée 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 dossier 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 voir non seulement 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 la visualisation de différences entre les hiérarchies de répertoire. Mais si vous avez un outil externe qui, lui, supporte 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 configuré un outil de diff alternatif, vous pouvez utiliser la touche Maj 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'indentation d'une section. Malheureusement ceci va marquer un grand nombre de lignes comme étant modifiées, bien qu'il n'y ait pas de changement à la signification du code. Ces options 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 TortoiseMerge.

Ignorer les fins de ligne exclut les modifications qui ne concernent que le style des caractères de fin de ligne.

Comparer les espacements inclut 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 en avait pas précédemment, ou supprimer complètement un espace est toujours indiqué comme un changement.

Ignorer tous les caractères d'espacement exclut toutes les modifications qui ne concernent que des caractères d'espacement.

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

Comparer des dossiers

Figure 4.29. 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 dossier dans la boîte de dialogue de journal, vous pouvez Menu contextuelComparer 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 à choisir un emplacement où sauvegarder l'arbre des modifications.

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

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

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 limiter la liste aux noms de fichiers contenant un texte donné. Remarque : la boîte de dialogue utilise une recherche texte simple, donc si vous voulez restreindre la liste aux fichiers C vous devrez saisir .c et non *.c.

Comparaison d'images avec TortoiseIDiff

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

Figure 4.30. 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 faire comme si vous compariez deux calques par transparence.

Naturellement vous pouvez aussi faire un zoom avant et arrière et vous déplacer sur l'image. Vous pouvez également effectuer un mouvement panoramique de l'image en la faisant glisser avec le bouton gauche. 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 vous gêne, 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 superposées, 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+Maj-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. Cela peut être utile lorsque vous cherchez beaucoup de petites modifications.

Parfois vous voulez voir une différence plutôt qu'un mélange. Vous pourriez avoir les fichiers d'images de deux révisions d'un circuit imprimé et souhaiter voir quelles pistes ont changé. 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 blanches et les changements apparaîtront en couleur.

Comparaison de documents Office

Quand vous voulez comparer des documents binaires, vous devez normalement utiliser le logiciel que vous avez utilisé pour créer le document, puisqu'il comprend le format de fichier. Pour les suites bureautiques couramment utilisées Microsoft Office et Open Office, il y a effectivement des fonctionnalités d'affichage de différences, et TortoiseSVN inclut des scripts pour les appeler avec les bons paramètres quand vous comparez des fichiers avec les extensions connues. Vous pouvez vérifier quelles extensions de fichier sont supportées et en ajouter en allant dans TortoiseSVNConfiguration et en cliquant sur Avancé dans la section Visualiseur de différences.

Problèmes avec Office 2010

Si vous avez installé la version Click-to-Run d'Office 2010 et que vous essayez de comparer des documents, vous pouvez avoir un messsage d'erreur de Windows Script Host du type « le composant ActiveX ne peut pas créer l'objet word.Application ». Il semble qu'il faille utiliser la version MSI d'Office pour avoir la fonctionnalité de comparaison.

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 est un excellent outil de comparaison open source qui est également capable de gérer les répertoires.

Perforce Merge

Perforce est un logiciel de gestion de version commercial, mais vous pouvez télécharger l'outil de comparaison/fusion gratuitement. Vous pouvez obtenir plus d'informations de Perforce.

KDiff3

KDiff3 est un outil de comparaison gratuit qui est également capable de gérer les répertoires. Vous pouvez le télécharger ici.

SourceGear DiffMerge

SourceGear Vault est un logiciel de gestion de version commercial, mais vous pouvez télécharger l'outil de comparaison/fusion gratuitement. Vous pouvez obtenir plus d'informations de SourceGear.

ExamDiff

ExamDiff Standard est un logiciel gratuit. Il peut gérer 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 Unicode. Vous pouvez les télécharger chez PrestoSoft.

Beyond Compare

Comme ExamDiff Pro, c'est un excellent outil de comparaison shareware qui est capable de gérer les comparaisons de répertoire et Unicode. Téléchargez-le chez Scooter Software.

Araxis Merge

Araxis Merge est un outil commercial utile pour comparer et fusionner les fichiers et les dossiers. Il fait des comparaisons à trois éléments pour les fusions et a des liens de synchronisation à utiliser si vous avez changé l'ordre des fonctions. Téléchargez-le chez 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.