Comment comparer des textes et trouver les différences

· 5 min de lecture

Trouver ce qui a changé entre deux versions d'un document, fichier de configuration ou morceau de code est une tâche courante. Lire les deux versions et repérer les différences manuellement est lent et peu fiable, surtout avec de longs textes. Un vérificateur de différences le fait instantanément et met en évidence chaque changement. Le même algorithme qui alimente l'historique de commit de Git, l'interface de révision de pull-request de GitHub et la commande Unix diff sous-tend tout outil de différence visuelle que vous avez jamais utilisé.

Comment comparer du texte

  1. Collez les deux versions : entrez le texte original à gauche et le texte modifié à droite.
  2. Examinez les surlignages : les lignes ajoutées sont affichées en vert, les lignes supprimées en rouge. Les lignes modifiées montrent à la fois les anciennes et nouvelles versions.
  3. Exportez ou copiez : copiez les résultats de différence ou téléchargez un rapport.

La comparaison se produit dès que les deux volets ont du texte. Il n'y a pas de bouton Comparer à cliquer ; les modifications de chaque côté relancent la différence en temps réel, ce qui est utile lorsque vous itérez sur une correction et voulez voir l'effet immédiatement.

Lire une différence

La sortie de différence utilise un système de couleurs simple :

C'est la même convention utilisée par Git, GitHub, GitLab, Bitbucket et chaque système de contrôle de version majeur. Les couleurs ne sont pas arbitraires : le vert pour les ajouts et le rouge pour les suppressions sont la norme depuis les années 1970 lorsque les premiers outils de différence visuelle (comme la commande sdiff) ont été livrés sur Unix. Les outils modernes ajoutent parfois du jaune ou de l'orange pour "changé" (une ligne qui existe dans les deux mais est différente), mais le rouge et le vert restent les ajouts/suppressions universels.

Une brève histoire de diff

L'algorithme diff a été publié pour la première fois par Douglas McIlroy aux Bell Labs en 1976, s'appuyant sur le raffinement ultérieur d'Eugene Myers (l'algorithme O(ND), 1986) qui a rendu diff suffisamment rapide pour une utilisation interactive. L'algorithme original de McIlroy a été publié avec la version Unix V7 en 1979 et fait partie de tout système d'exploitation similaire à Unix depuis. L'algorithme de Myers est ce qui alimente les implémentations diff modernes : le diff de Git, l'interface web de GitHub, chaque GUI de diff de Beyond Compare à VS Code.

Le format de diff côte à côte visuel précède l'algorithme : il remonte aux conventions de relecture manuelle dans l'édition (montrant deux colonnes de texte avec les changements marqués dans la marge). Le logiciel des années 1970 a juste automatisé ce que les éditeurs faisaient sur papier depuis des siècles. Le format "diff unifié" (celui avec les en-tetes --- et +++ que vous voyez dans les fichiers patch) a été introduit en 1990 par GNU diff et est maintenant la norme de facto pour partager les changements par texte.

Quand la vérification de différence est utile

Diff basé sur les lignes vs basé sur les caractères

Le vérificateur de différences utilise la comparaison basée sur les lignes, ce qui signifie qu'il traite chaque ligne comme la plus petite unité de différence. Si vous changez un seul mot sur une ligne, toute la ligne est affichée comme changée (l'ancienne ligne en rouge, la nouvelle ligne en vert) et vous devez repérer la différence au niveau du mot vous-meme.

Le diff basé sur les lignes est la norme pour les fichiers de code et de configuration car ceux-ci sont généralement orientés ligne (une instruction par ligne, une option de configuration par ligne). C'est rapide, prévisible et correspond à la façon dont Git et chaque outil de revue de code fonctionnent.

Pour la comparaison de prose où les changements au niveau de la ligne sont trop grossiers, certains outils offrent un diff au niveau du mot ou du caractère qui met en évidence uniquement les mots changés dans une ligne. C'est plus précis mais plus difficile à lire pour le code. Si vous avez besoin d'un diff au niveau du mot, recherchez un outil spécifiquement étiqueté "word diff" ou "intra-line diff."

Confidentialité et contenu confidentiel

Le vérificateur de différences s'exécute entièrement dans votre navigateur. Les deux morceaux de texte restent sur votre appareil ; rien n'est téléversé. Cela importe car le texte que vous voulez le plus comparer est souvent confidentiel : contrats en cours de négociation, communiqués de presse en brouillon, documents de politique interne, code source sous NDA. Les outils de différence cloud (DiffChecker.com, JsonDiff.com, outils de fusion en ligne) nécessitent de téléverser les deux textes vers un serveur tiers, ce qui est précisément ce que vous voulez éviter pour le contenu sensible. La différence basée sur navigateur n'a aucune de ces expositions.

La session est également sans état : rien ne persiste après la fermeture de l'onglet. Si vous devez conserver une trace de la différence, copiez la sortie ou prenez une capture d'écran avant de naviguer ailleurs.

Pièges courants

Conseils

Questions fréquentes

Le diff compare-t-il caractère par caractère ?

Il compare ligne par ligne, la même approche que Git et la plupart des outils pro de diff. Si un seul caractère change sur une ligne, la ligne entière est surlignée comme changée.

Y a-t-il une limite de taille ?

Pas de limite dure, mais de très gros textes (plus de 10 000 lignes) peuvent prendre un instant à traiter puisque la comparaison tourne entièrement dans votre navigateur.

Puis-je comparer des fichiers de code ?

Oui. Le diff fonctionne avec n'importe quel texte, y compris du code source. La coloration syntaxique aide à lire plus facilement les diffs de code.

Mon texte est-il envoyé sur un serveur ?

Non. La comparaison se fait dans votre navigateur. Votre texte ne quitte jamais votre appareil.