Outils de développement · Comparaison de texte
Pourquoi une différence affiche un paragraphe déplacé comme supprimé et ajouté à nouveau
· Comment ça marche
texte-diff révision du code flux de travail du développeur
Explique pourquoi la comparaison basée sur les lignes n'a aucune notion de mouvement, comment un bloc déplacé apparaît dans la sortie et des moyens pratiques de réviser des documents réorganisés de toute façon.
Vous avez déplacé une section et le diff est devenu rouge et vert — décrit la surprise d'un gros diff après une petite réorganisation
Déplacer une section peut créer un grand bloc rouge près de son ancienne position et un bloc vert tout aussi grand près de sa nouvelle. Les mots peuvent rester intacts. Ce qui a changé, c'est leur ordre par rapport aux lignes environnantes, et l'ordre fait partie de la séquence comparée par une différence de ligne.
Cette sortie est plus facile à faire confiance une fois que vous cessez d'attendre une opération de « déplacement ». ToolAcre émet uniquement des lignes égales, supprime et ajoute. Un réviseur peut reconnaître des blocs correspondants à deux emplacements, mais le programme ne les relie pas avec une flèche ni n'affirme que l'un a été copié à partir de l'autre.
Les différences de lignes sont uniquement conservées, supprimées et insérées : explique que l'algorithme recherche les lignes communes aux deux versions dans le même ordre, de sorte que les modifications d'ordre interrompent la correspondance.
LCS conserve les lignes qui apparaissent dans les deux versions dans le même ordre relatif. Si la section Beta précède Gamma à gauche mais suit Gamma à droite, un de ces blocs ne peut pas rester dans la sous-séquence commune choisie. Il doit quitter et rentrer dans l'histoire d'édition.
Une ligne modifiée est représentée avec le même vocabulaire primitif : supprimez l'ancienne ligne et ajoutez la nouvelle ligne. Cette simplicité permet de conserver les numéros de ligne et de compter avec précision. Cela signifie également que la similarité visuelle entre les blocs distants supprimés et ajoutés est une observation pour le réviseur, et non un résultat tapé par l'algorithme.
Pourquoi garder l'ordre est tout l'intérêt – montre que permettre des correspondances dans le désordre rendrait le résultat ambigu et beaucoup plus lent à calculer
La correspondance ordonnée est la définition utilisée par cette implémentation. Autoriser les appariements arbitraires dans le désordre répondrait à une question différente et nécessiterait des règles pour les doublons, les modifications partielles et les destinations concurrentes. Le référentiel ne compare pas une telle alternative, donc cet article ne fait aucune comparaison de performances non prise en charge.
L'avantage pratique de l'ordre est une lecture sans ambiguïté autour des voisins stables. Des lignes égales de préfixes et de suffixes ancrent le milieu modifié, et chaque ligne émise avance d'un côté connu. Même lorsque des liens existent, la reconstruction reste un parcours cohérent à travers les deux documents plutôt qu’un ensemble de lignes similaires.
La préservation de l'ordre définit la correspondance LCS ; cette source ne prouve pas une pénalité de vitesse universelle pour les mouvements
Prenez un README avec les sections Intro, Install, Configure et License, puis placez Configure avant Install. Les lignes à l'intérieur d'un bloc apparaîtront supprimées à l'emplacement d'origine et ajoutées à proximité de la destination tandis que l'ordre conservé par le LCS reste inchangé.
Ajoutez une modification de libellé à l'intérieur du bloc déplacé et la paire n'est plus visuellement identique. Comparez directement les textes des blocs plutôt que de supposer que chaque ligne verte est simplement une relocalisation. Les numéros de ligne d'origine à base unique vous aident à localiser les deux copies et à confirmer si le contenu a changé pendant le déplacement.
Examiner les mouvements en pratique : suggère de comparer en deux passes : d'abord avec les sections restaurées dans leur ordre d'origine pour capturer les modifications, puis en confirmant le mouvement séparément.
Pour un examen attentif, rétablissez d'abord l'ordre original des sections dans une copie temporaire et comparez le libellé. Cette passe isole les modifications à l’intérieur du bloc. Comparez ensuite la véritable version réorganisée pour confirmer le placement. Il est plus facile de répondre à deux questions précises qu’à un seul écran combinant délocalisation et révision.
Ne pas approuver en faisant correspondre uniquement la première et la dernière ligne d'un long bloc. Les titres répétés, les lignes vides ou les exemples dupliqués peuvent créer des paires visuelles trompeuses. Vérifiez l'intégralité des plages supprimées et ajoutées, y compris la ponctuation, la casse et tout espace que les options actives peuvent normaliser.
Comment certains outils de contrôle de version se rapprochent de la détection de mouvement — décrit l'heuristique de ligne déplacée avec code couleur dans git comme une étape de post-traitement, ne faisant pas partie de la différence elle-même
Certains produits d'évaluation peuvent ajouter une présentation en ligne déplacée après leur différence de base, mais ToolAcre ne contient pas une telle passe. Sa source n'a pas de seuil de similarité, d'empreinte digitale de bloc ou de type de ligne déplacée. Nommer l’heuristique d’un autre produit sans sa source brouillerait une frontière utile dans cet outil.
Ici, la technique défendable est l'appairage manuel. Réduisez les longues séquences inchangées pour rapprocher les régions modifiées, puis inspectez le texte répété. La fonction de réduction remplace uniquement les longues séquences égales par des marqueurs de saut ; cela ne modifie pas le résultat sous-jacent et ne déduit pas de relation entre les changements.
Le comportement de détection de mouvement dans d'autres outils ne fait pas partie des preuves de ce référentiel
La différence de texte ne fusionne pas les versions, ne préserve pas la paternité, ne déduit pas l'intention et ne reconnaît pas un changement de nom. Il ne peut pas dire si un bloc en double a été déplacé, copié ou recréé indépendamment. Ces conclusions nécessitent des preuves historiques ou de domaine que deux états collés ne contiennent pas.
Il n'analyse pas non plus la structure Markdown. Un marqueur de cap n’est qu’une partie d’une ligne. Utilisez un examen du référentiel lorsque l'historique des validations est important et utilisez cette vue du navigateur comme deuxième avis ciblé sur deux états concrets plutôt que comme remplacement de la provenance.
À retenir : lire un mouvement par paire – résume comment repérer la paire de blocs correspondante et utiliser l'outil basé sur un navigateur pour une seconde passe rapide sans télécharger le document.
Lorsqu'une réorganisation remplit l'écran, recherchez une plage supprimée et une plage ajoutée avec le même texte d'origine. Traitez-les comme une paire de candidats, puis recherchez au sein de la paire de véritables modifications. Cette méthode de lecture respecte ce que prouve l’algorithme de ligne et ce que seul un humain peut en déduire.
Étant donné que la comparaison et le rendu restent dans les modules d'outils chargés, un brouillon peut être inspecté sans demande de traitement de texte. Collez uniquement le matériel approprié à l'environnement de votre navigateur, comparez et effacez les éditeurs lorsque vous avez terminé ; l'outil lui-même n'expose aucun historique de comparaison enregistré.