Cas d'usage
- Code review rapide d'un fichier sans passer par git.
- Comparaison de contrats ou conditions générales entre deux versions.
- Détection de modifications dans un texte légal, statuts, etc.
- Vérification d'une copie : « ce texte a-t-il été altéré ? ».
- Avant / après refactoring de configuration JSON, YAML, .env.
Algorithme LCS
Le diff utilise la plus longue sous-séquence commune(Longest Common Subsequence) — algorithme classique de programmation dynamique. Principe :
- Construire une matrice
dp[i][j]= LCS des i premières lignes de A et j premières lignes de B. - Si A[i] = B[j],
dp[i][j] = dp[i−1][j−1] + 1. - Sinon,
dp[i][j] = max(dp[i−1][j], dp[i][j−1]). - Backtracking depuis
dp[n][m]pour reconstituer les opérations (égalité, ajout, suppression).
Complexité : O(n × m) en temps et en espace. Adapté à des textes de quelques milliers de lignes. Au-delà, des algorithmes plus avancés (Myers, Patience) sont préférables — c'est ce qu'utilise git.
Types de diff
| Type | Description |
|---|---|
| Ligne | Ce que fait cet outil. Standard git. |
| Mot | git diff --word-diff. Granularité plus fine. |
| Caractère | Idéal pour textes courts (titres, descriptions). |
| Sémantique | Diff de structure (ex : XML, JSON par clé). |
Confidentialité
Cet outil exécute le diff entièrement dans votre navigateur. Aucune donnée n'est envoyée à un serveur. Idéal pour comparer du contenu sensible : code source privé, contrats, NDA, informations confidentielles.
Questions fréquentes
Quel granularité ?
Ligne par ligne — adapté à du code ou texte structuré.
Algorithme ?
LCS (Longest Common Subsequence), O(n×m).
Mes données ?
Restent dans votre navigateur, aucun envoi.
Limite de taille ?
Quelques milliers de lignes. Au-delà, préférez git diff.
Diff de mots ?
Pas ici. Voir git diff --word-diff.
Outils complémentaires
Sources
- Hirschberg DS. A linear space algorithm for computing maximal common subsequences. CACM 1975.
- Myers EW. An O(ND) Difference Algorithm and Its Variations. Algorithmica 1986.