Compară texte
Lipește originalul și versiunea modificată, iar fiecare diferență va fi evidențiată, până la nivel de cuvânt.
Lipește text în ambele câmpuri pentru a le compara.
Cum funcționează
Comparația caută cel mai scurt șir de rânduri adăugate și șterse care transformă un text în celălalt, cu algoritmul lui Eugene Myers din 1986. Este aceeași metodă pe care git o folosește implicit. Rândurile modificate sunt apoi comparate cuvânt cu cuvânt, ca să vezi exact ce diferă.
Rândurile adăugate au fundal verde, iar cele șterse fundal roșu. Un rând modificat contează ca unul șters și unul adăugat, la fel ca în alte instrumente de diff.
Ignoră majusculele face ca Salut și salut să fie considerate la fel. Ignoră spațiile nu ține cont de spațiile de la începutul și sfârșitul rândului și nici de mai multe spații la rând, ceea ce ajută când s-a schimbat indentarea.
Unified diff este formatul text generat de diff -u, cu trei rânduri de context în jurul fiecărei modificări. Poate fi lipit într-un raport de eroare sau citit de patch și git apply.
Textele tale nu părăsesc niciodată browserul. Textele foarte lungi care diferă aproape complet nu sunt comparate rând cu rând; în acest caz, toate rândurile apar ca modificate.
Cum compară instrumentul
Mai întâi, rândurile identice de la început și de la sfârșit sunt puse deoparte, pentru că nu pot face parte din nicio modificare. Între ele, algoritmul lui Myers găsește cel mai scurt șir de rânduri șterse și adăugate. Sfârșiturile de rând CR LF sau doar CR sunt transformate dinainte în LF, așa că același text din Windows și de pe un Mac este socotit identic. În interiorul unei modificări, rândurile șterse apar înaintea celor adăugate și sunt puse în perechi, în ordine, pentru comparația cuvânt cu cuvânt. Cuvintele sunt despărțite la spații și la semne de punctuație, așa că o virgulă schimbată este marcată separat.
Exemplu de calcul
Compară rândurile măr, banană, cireașă cu măr, banană coaptă, cireașă, curmală, ambele cu trecere la rând nou după ultimul rând. Algoritmul păstrează măr și cireașă, șterge banană și adaugă banană coaptă și curmală: două rânduri adăugate și unul șters. Rândul banană coaptă este pus în pereche cu banană, și doar cuvântul coaptă, cu spațiul dinainte, este marcat ca nou. În unified diff acesta este un singur bloc cu antetul @@ -1,3 +1,4 @@: începe la rândul 1 în ambele texte și cuprinde trei rânduri din cel vechi și patru din cel nou.
Fără trecere la rând nou după ultimul rând, rezultatul se schimbă. Potrivit GNU Diffutils, un ultim rând fără trecere la rând nou nu este egal cu același rând care o are, iar cireașă era ultimul rând doar în textul vechi. Instrumentul arată atunci cireașă ca șters și adăugat, trei rânduri adăugate și două șterse, și scrie \ No newline at end of file după ultimul rând al fiecărui text, cum face diff -u. Unul lângă altul și pe o coloană, rândul șters cireașă poartă mențiunea „fără trecere la rând nou la final”, pentru că altfel ar părea neschimbat. Ignoră spațiile nu ține cont de această diferență.
Limite
Munca este limitată la 4.000 de modificări la nivel de rând. Două texte de câte 2.001 rânduri complet diferite depășesc limita, iar atunci toate rândurile apar ca șterse și adăugate, fără comparație. La nivel de cuvânt, limita este de 2.000 de modificări pentru fiecare pereche de rânduri, iar dacă s-au schimbat mai mult de 80 % din caractere, rândul este afișat întreg, fără marcarea cuvintelor.
Ce nu se vede
Blocurile mutate nu sunt recunoscute, pentru că algoritmul cunoaște doar ștergerea și adăugarea. Mută primele două rânduri ale unui text de cinci rânduri chiar înaintea ultimului, iar instrumentul arată două rânduri șterse și două adăugate. Ignoră spațiile comprimă spațiile din interiorul unui rând, dar nu le elimină: a,b și a, b rămân diferite.