Aperçu de la comparaison et de la fusion de fichiers


Cette rubrique décrit comment WinMerge détecte et affiche les différences au sein des fichiers texte, et présente des opérations simples de comparaison et de fusion de fichiers. Voir Comparer au format hexadécimal pour des informations connexes sur les fichiers hexadécimaux.

1. Comparer des fichiers

Nous comparons généralement deux fichiers liés d'une manière ou d'une autre, comme deux versions éditées à des moments différents ou par des personnes différentes. Si vous examinez deux fichiers de ce type, vous pouvez généralement voir des zones similaires, mais aussi identifier plusieurs types de différences : caractères et mots différents, lignes différentes, voire des blocs entiers de texte différents. Mais essayer de comprendre toutes les différences entre deux fichiers en les parcourant dans votre éditeur favori peut s'avérer fastidieux et source d'erreurs. Les outils spécialisés de différence/fusion comme WinMerge sont conçus pour rendre ce travail plus systématique et efficace.

Un utilitaire de différence simple que la plupart des gens ont utilisé est le correcteur orthographique : il vous fait parcourir systématiquement un document, met en évidence les mots qui diffèrent de ceux de son dictionnaire et vous aide à résoudre chaque problème d'orthographe. Cependant, s'arrêter aux caractères et aux mots n'est pas un moyen efficace de comprendre les différences entre plusieurs fichiers. Pour cette raison, de nombreux utilitaires de différence utilisent les lignes comme unité de base de comparaison.

WinMerge utilise également les lignes comme unité de base de différence. Les mots et les caractères ne sont pas traités individuellement dans les opérations de comparaison et de fusion. Pour illustrer cela, considérons deux fichiers identiques à l'exception d'une ligne qui est différente. Si les deux versions de la ligne comportent quatre mots différents et qu'une version a une espace supplémentaire, nous disons que le fichier présente une différence, et non cinq.

S'il est plus rapide de comparer des lignes que des mots, il est parfois aussi utile de traiter un bloc entier de lignes comme une seule différence, au lieu de comparer une ligne à la fois. Comme nous le verrons plus tard, la détection de différences sur plusieurs lignes rend la fusion plus efficace également.

1.1. Opération de comparaison simple

Cette section propose un exemple simple qui démontre comment comparer les différences de lignes entre deux fichiers dans WinMerge :

  1. À l'aide d'un éditeur de texte, créez deux fichiers avec les noms et contenus indiqués ici, en veillant à préserver exactement les mots et les sauts de ligne :

    Fichier1 : 

    Comparer les mots est lent 
    et les caractères. À la place,  
    WinMerge compare les lignes.
    Croyez-le ou non.

    Fichier2 : 

    Comparer les mots est lent.
    WinMerge compare les lignes.
    Croyez-le ou non.
  2. Lancez WinMerge. Par exemple, double-cliquez sur le raccourci bureau Raccourci bureau WinMerge WinMerge.

  3. Dans la boîte de dialogue Sélectionner des fichiers et des dossiers, spécifiez Fichier1 comme 1er fichier et Fichier2 comme 2e fichier, puis cliquez sur Comparer. La fenêtre de comparaison de fichiers affiche les deux fichiers dans les volets Fichier gauche et droit, comme ceci :

    Capture d'écran de Comparer les fichiers

    Les éléments sont décrits plus en détail dans Comparer et fusionner des fichiers texte. Voici quelques caractéristiques que vous devriez remarquer dans cet exemple :

    Nombre de différences

    Le message dans la barre d'état au bas de la fenêtre WinMerge vous indique que deux différences ont été détectées.

    Couleurs de différence

    Les blocs de différence sont marqués avec la couleur d'arrière-plan de différence (doré, par défaut).

    Les différences de lignes peuvent être activées pour marquer le texte modifié à l'intérieur des blocs de différences, en utilisant la couleur d'arrière-plan des mots (jaune clair, par défaut).

    Les lignes identiques ne sont pas marquées : elles ont un fond blanc, comme la troisième ligne de l'exemple.

    Lignes vides

    Remarquez que dans le volet de comparaison de gauche, la deuxième ligne contient du texte ; l'autre volet présente une ligne grise vide au même endroit. Cette ligne vide n'existe pas dans le fichier source Fichier2, alors que fait-elle dans WinMerge ?

    WinMerge insère une ou plusieurs lignes vides grises dans une version d'une différence lorsque l'autre version comporte plus de lignes. Ces lignes grises vides ne représentent pas des lignes blanches dans le fichier source ; ce ne sont que des emplacements réservés dans l'affichage. Le but de ces lignes réservées est de maintenir l'alignement vertical entre les versions gauche et droite des différences. Ainsi, dans notre exemple, le texte WinMerge compares lines apparaît côte à côte dans la fenêtre de comparaison, même s'ils se trouvent sur des lignes différentes dans les fichiers sources. Cela rend la comparaison des différences beaucoup plus facile dans WinMerge que dans un éditeur classique.

    Tip

    L'une des conséquences de ces lignes vides est que les deux volets de la fenêtre de comparaison de fichiers affichent toujours le même nombre total de lignes, même si ce n'est pas le cas des fichiers sources.

    Maintenant que vous comprenez comment WinMerge détecte et affiche les différences, vous pouvez utiliser les fonctions de comparaison efficacement, comme le montrent les étapes suivantes.

  4. Cliquez sur Bouton Différence actuelle Différence actuelle dans la barre d'outils (ou appuyez sur Alt+Entrée). Si ce bouton n'est pas activé (par exemple, si votre curseur se trouve sur une ligne différente), cliquez sur Bouton Première différence Première différence (ou appuyez sur Alt+Origine) à la place.

    Lorsque vous sélectionnez une différence, les deux versions sont chargées dans le volet Diff. Le volet Diff confirme quelles lignes sont incluses dans une différence et vous permet de les examiner isolément du reste du fichier. Dans notre exemple, la Différence 1 comporte clairement deux lignes.

    Volet Diff de comparaison de fichiers

  5. Cliquez sur Bouton Différence suivante Différence suivante dans la barre d'outils (ou cliquez sur Alt+Entrée). Cela saute par-dessus la ligne identique (qui n'est pas une différence) et sélectionne la dernière ligne.

    Vous avez atteint la fin du fichier et avez eu l'occasion d'examiner chaque différence. Il s'agissait d'un exemple trivial — il n'y avait que deux différences — et il existe d'autres façons de comparer les différences dans WinMerge. Mais cela démontre l'efficacité de l'utilisation des commandes de navigation de WinMerge.

2. Fusion des fichiers

Le but de la fusion est de combiner les modifications de deux fichiers en un seul. La fusion étend les concepts et fonctions utilisés dans l'opération de comparaison : veuillez lire la section précédente avant de commencer celle-ci. En plus de détecter les différences entre deux versions de fichiers, nous résolvons les différences et enregistrons le résultat dans une version cible unique.

La fusion de fichiers rend possible le développement simultané, et c'est une tâche courante dans les environnements d'équipe. Par exemple, supposons que vous et une autre personne souhaitiez ajouter du code au même fichier de programme en même temps. Vous commencez tous les deux avec une copie identique du fichier, mais au cours du développement, vous créez des versions distinctes qui ne sont pas identiques. À un moment donné, les deux versions doivent être fusionnées en une seule version qui préserve les modifications de chaque contributeur.

La fusion peut être suggérée (ou même initiée) par des systèmes de contrôle de version comme Subversion et Git. Par exemple, votre système de contrôle de version pourrait vous empêcher de soumettre des modifications à son dépôt en raison de conflits de fusion. Un conflit peut survenir si quelqu'un d'autre a enregistré une version différente du même fichier pendant que vous travailliez sur la vôtre, et que le système de contrôle de version n'a pas pu fusionner automatiquement les différences. Lorsque cela arrive, vous devrez peut-être fusionner les versions conflictuelles avant de tenter à nouveau de soumettre votre version. De nombreux systèmes disposent d'outils de différenciation et de fusion intégrés, mais vous préférerez peut-être utiliser WinMerge à la place.

Tout comme pour la comparaison, vous utilisez les commandes de la barre d'outils de WinMerge (ou les raccourcis clavier) pour parcourir systématiquement les différences. Résolvez chaque différence en copiant soit son candidat de gauche, soit celui de droite vers l'autre côté. Une fois que vous avez résolu toutes les différences, WinMerge vous informe que toutes les différences sont résolues (les versions sont identiques), et vous avez terminé la fusion.

2.1. Opération de fusion simple

Ce court exercice démontre comment utiliser les commandes de la fenêtre de comparaison de fichiers de manière systématique pour fusionner les fichiers simples présentés précédemment :

  1. Cliquez sur Bouton Différence actuelle Différence actuelle dans la barre d'outils pour sélectionner la première différence. Si ce bouton n'est pas activé, cliquez plutôt sur Bouton Première différence Première différence.

  2. Cliquez sur Bouton Copier à droite Copier à droite pour fusionner la différence 1 de Fichier1 vers Fichier2. Dans Fichier2, notez que la ligne de différence unique est remplacée par les deux lignes de Fichier1, et que la ligne grise vide a disparu.

  3. Cliquez sur Bouton Différence suivante Différence suivante pour sélectionner la différence 2. C'est plus facile que de chercher et sélectionner la différence vous-même. C'est particulièrement utile si vous souhaitez parcourir toutes les différences sans en oublier accidentellement.

  4. Cliquez sur Bouton Copier à gauche Copier à gauche pour fusionner la différence 2 de Fichier2 vers Fichier1.

    Le message indiquant que les fichiers sont identiques vous signale que la fusion est terminée :

  5. Cliquez sur OK pour fermer le message. Le message d'état de différence passe de Différence 1 sur 1 à identique.

  6. Appuyez sur Ctrl+S pour enregistrer vos modifications.

Bien que très simple, cet exemple illustre une méthodologie de base que vous pouvez utiliser pour parcourir une comparaison de n'importe quelle longueur, en fusionnant chaque différence une par une jusqu'à obtenir le résultat souhaité.

2.2. Choisir un fichier de résultat de fusion

Vous contrôlez l'endroit où votre résultat de fusion est conservé. La fenêtre de comparaison de fichiers de WinMerge n'a pas de volet de résultat distinct, contrairement à certains outils de fusion. La stratégie la plus simple consiste donc à enregistrer vos modifications dans un, deux ou trois fichiers sources. Appuyez sur Ctrl+S à tout moment pour enregistrer les modifications actuelles dans tous les fichiers ; alternativement, cliquez sur FichierEnregistrer à gauche, FichierEnregistrer au milieu ou FichierEnregistrer à droite pour n'enregistrer qu'un seul fichier.

Pour écrire dans un troisième fichier au lieu de l'un des fichiers sources, utilisez FichierEnregistrer sous. Par exemple, votre fichier cible pourrait être le fichier de différence ou de conflit généré par un système de contrôle de version.

De même, dans la ligne de commande WinMerge, vous pouvez laisser les deux ou trois versions sources inchangées en utilisant l'argument optionnel outputfile, comme décrit dans Ligne de commande.