Sammenlign tekster
Indsæt originalen og den ændrede version, så markeres hver forskel helt ned til enkelte ord.
Indsæt tekst i begge felter for at sammenligne.
Sådan virker det
Sammenligningen finder den korteste række af tilføjede og fjernede linjer, der gør den ene tekst til den anden, med den algoritme, Eugene Myers beskrev i 1986. Det er den samme metode, som git bruger som standard. Ændrede linjer sammenlignes derefter ord for ord, så du kan se præcis, hvad der er forskelligt.
Tilføjede linjer vises med grøn baggrund og fjernede med rød. En ændret linje tæller som en fjernet og en tilføjet, præcis som i andre diffværktøjer.
Ignorer store og små bogstaver gør, at Hej og hej regnes som ens. Ignorer mellemrum ser bort fra mellemrum i starten og slutningen af linjen og fra flere mellemrum i træk, hvilket er nyttigt, når indrykningen er ændret.
Unified diff er det tekstformat, som kommandoen diff -u giver, med tre linjers kontekst omkring hver ændring. Det kan indsættes i en fejlrapport eller læses af patch og git apply.
Teksterne forlader aldrig din browser. Meget lange tekster, der er næsten helt forskellige, sammenlignes ikke linje for linje; så vises alle linjer som ændrede.
Sådan sammenligner værktøjet
Først trækkes ens linjer i begyndelsen og slutningen fra, fordi de ikke kan indgå i nogen ændring. Mellem dem finder Myers’ algoritme den korteste række af fjernede og tilføjede linjer. Linjeskift med CR LF eller kun CR laves om til LF forinden, så den samme tekst fra Windows og fra Mac regnes som ens. Inden for en ændring vises fjernede linjer før tilføjede, og de parres i rækkefølge til sammenligningen ord for ord. Ordene deles ved mellemrum og tegnsætning, så et ændret komma markeres for sig.
Eksempel
Sammenlign linjerne æble, banan, citron med æble, banan split, citron, daddel, begge med et linjeskift efter sidste linje. Algoritmen beholder æble og citron, fjerner banan og tilføjer banan split og daddel: to tilføjede linjer og en fjernet. Linjen banan split parres med banan, og kun ordet split med mellemrummet foran markeres som nyt. I unified diff bliver det ét stykke med overskriften @@ -1,3 +1,4 @@: det begynder på linje 1 i begge tekster og omfatter tre linjer i den gamle og fire i den nye.
Uden linjeskift efter sidste linje bliver resultatet et andet. Ifølge GNU Diffutils er en sidste linje uden linjeskift ikke lig med samme linje med linjeskift, og citron var kun sidste linje i den gamle tekst. Værktøjet viser så citron som fjernet og tilføjet, tre tilføjede linjer og to fjernede, og skriver \ No newline at end of file efter begge teksters sidste linje, som diff -u gør. Side om side og i én kolonne får den fjernede linje citron mærket »intet linjeskift til sidst«, da den ellers ser uændret ud. Ignorer mellemrum ser bort fra forskellen.
Grænser
Arbejdet er begrænset til 4.000 ændringer på linjeniveau. To tekster med hver 2.001 helt forskellige linjer går over grænsen, og så vises alle linjer som fjernede og tilføjede uden sammenligning. På ordniveau er grænsen 2.000 ændringer pr. linjepar, og er mere end 80 % af tegnene ændret, vises linjen hel uden ordmarkering.
Det, der ikke kan ses
Flyttede stykker genkendes ikke, fordi algoritmen kun kender til fjernelse og tilføjelse. Flyttes de to første linjer i en tekst på fem linjer ned før den sidste, viser værktøjet to fjernede og to tilføjede linjer. Ignorer mellemrum fjerner ikke mellemrum inde i linjen, men slår dem kun sammen: a,b og a, b regnes stadig som forskellige.