Kako diff radi
Diff pronalazi najmanji skup umetanja i brisanja koji jedan niz redova pretvara u drugi. Klasični algoritam (Myers, 1986, koriste ga git i GNU diff) nalazi najduži zajednički podniz u vremenu srazmernom broju razlika, pa je poređenje dve velike, gotovo identične datoteke brzo. Ova stranica ga prvo pokreće na redovima, a zatim na znakovima unutar svakog izmenjenog para, i zato se izmena jedne reči prikazuje kao jedna istaknuta reč, a ne kao dva cela reda.
Čitanje unified diff-a
--- old.txt
+++ new.txt
@@ -12,7 +12,8 @@
red konteksta
-uklonjeni red
+dodati red
+još jedan dodati red
red konteksta Zaglavlje @@ daje broj reda i dužinu segmenta (hunk) u svakoj datoteci. Redovi koji počinju razmakom su nepromenjeni kontekst, - postoje samo u staroj datoteci, + samo u novoj. patch -p0 < changes.patch ga primenjuje; radi i git apply. Redovi konteksta omogućavaju patch-u da nađe pravo mesto čak i ako se datoteka pomerila.
Opcije
Ignorisanje razmaka tretira redove koji se razlikuju samo po razmacima ili tabovima kao jednake, što sakriva šum od preformatiranja i pokazuje prave izmene. Ignorisanje velikih i malih slova radi isto za kapitalizaciju. Unified diff i dalje prikazuje originalne redove; opcije utiču samo na to koji se redovi računaju kao izmenjeni.
Ograničenja
Sve radi u vašem pregledaču; nekoliko hiljada redova se poredi za znatno manje od sekunde. Veoma veliki unosi (preko oko 2.000 redova sa svake strane uz mnogo razlika) se odbijaju da bi stranica ostala responzivna; za njih koristite diff ili git diff --no-index a b lokalno.
Pitanja
Kako da uporedim dve datoteke?
Otvorite svaku u editoru i kopirajte sadržaj u dva polja. Za datoteke na serveru, diff -u stara nova ili git diff --no-index stara nova daju isti unified format bez napuštanja terminala.
Šta znači isticanje unutar reda?
Unutar para izmenjenih redova, znakovi koji se razlikuju su označeni; nepromenjeni znakovi se prikazuju obično. To je drugi diff pokrenut na nivou znaka nad tim parom.
Može li da poredi JSON ili kod?
Da; poredi tekst. Za JSON prvo lepo formatirajte obe strane (to radi JSON formater) tako da svaki ključ završi u svom redu i diff pokaže prave izmene umesto jednog ogromnog reda.
Da li se moj tekst otprema?
Ne. Poređenje radi u JavaScriptu u vašem pregledaču. Sajt nema bekend koji bi ga primio.