Utilia

Poređenje koda (diff)

Uporedi dve verzije koda jednu pored druge ili u jednoj koloni, sa isticanjem sintakse, brojevima redova, opcijama za razmake i diff-om za kopiranje.

Kako da uporediš dva dela koda

  1. Nalepi staru verziju u Originalni kod, a novu u Izmenjeni kod.
  2. Izaberi Jezik ili ostavi Prepoznaj automatski: alat pogađa na osnovu koda i prikazuje prepoznat jezik pored statistike.
  3. Izaberi Prikaz: Jedno pored drugog ili U jednoj koloni (objedinjeno).
  4. Podesi opcije koje ti trebaju: Zanemari razmake i uvlačenje, Zanemari razliku malih i velikih slova, Istakni izmenjene reči i Prikaži samo izmene (3 reda konteksta).
  5. Klikni Uporedi. Nakon prvog poređenja, rezultat prati tvoje izmene dok kucaš.
  6. Klikni Kopiraj kao objedinjeni diff ili Preuzmi .diff da izmenu iskoristiš kao zakrpu (patch).

Zameni strane razmenjuje dve verzije, što dodavanja pretvara u brisanja i obrnuto.

Kako se čita diff

Uklonjeni redovi su obojeni crveno i pripadaju originalu, a dodati redovi su obojeni zeleno i pripadaju novoj verziji. Svaki red zadržava svoj broj iz sopstvenog fajla, pa možeš odmah da skočiš na njega u uređivaču.

  • Jedno pored drugog stavlja dva fajla u dve numerisane kolone. Izmenjeni red stoji pored svoje nove verzije. Uz Istakni izmenjene reči označavaju se reči koje su se promenile unutar tog reda, a bez toga oba reda zadržavaju pune boje sintakse.
  • U jednoj koloni (objedinjeno) prikazuje jednu kolonu kao pregled koda: za svaki izmenjeni blok prvo idu uklonjeni redovi (−), pa dodati (+), sa starim i novim brojevima redova.
  • Prikaži samo izmene (3 reda konteksta) sažima duge neizmenjene delove u oznaku „⋯ N neizmenjenih redova“, što velike fajlove čini mnogo lakšim za pregled.

Red sa statistikom broji dodate, uklonjene i neizmenjene redove.

Isticanje sintakse

Isticanje se radi u tvom pregledaču pomoću biblioteke highlight.js. Učitava se samo gramatika izabranog jezika, pri prvom poređenju, pa stranica ostaje laka. Podržani jezici uključuju JavaScript, TypeScript, Python, Java, C#, C / C++, Go, Rust, PHP, Ruby, CSS, HTML / XML, JSON, YAML, SQL, Bash / Shell i Markdown. Automatsko prepoznavanje koristi jednostavne tragove (ključne reči, zagrade, parsiranje JSON-a). Ako pogreši, izaberi jezik sam ili izaberi Običan tekst.

Razmaci, uvlačenje i krajevi redova

Zanemari razmake i uvlačenje poredi redove nakon skraćivanja i svođenja nizova razmaka i tabulatora na jedan, pa fajl ponovo uvučen sa 2 na 4 razmaka ili sa tabulatora na razmake ne pokazuje razliku. Windows (CRLF) i Unix (LF) krajevi redova se normalizuju pre poređenja, pa se fajl kojem su se promenili samo krajevi redova prijavljuje kao identičan. Imaj na umu da razmaci mogu biti važni u Pythonu, YAML-u i Makefile-ovima: isključi opciju kad je uvlačenje značajno.

Format objedinjenog diff-a

Izvezena zakrpa koristi standardni objedinjeni format koji čitaju git apply, patch i alati za pregled koda: zaglavlje sa dva naziva fajla, pa delovi koji počinju sa @@ -a,b +c,d @@ i tri reda konteksta oko svake izmene. Fajlovi se zovu original i changed sa ekstenzijom za jezik.

Česta pitanja

Da li se moj kod otprema na server?

Ne. I poređenje i isticanje izvršavaju se lokalno u tvom pregledaču, a kod nikada ne napušta tvoj uređaj.

Po čemu se ovo razlikuje od alata za poređenje običnog teksta?

Koristi isti mehanizam poređenja red po red, ali dodaje isticanje sintakse, objedinjeni prikaz, sažimanje konteksta i obradu razmaka prilagođenu kodu.

Zašto su dva reda prikazana kao izmenjena iako izgledaju isto?

Verovatno se razlikuju u nevidljivim znacima: razmacima na kraju reda, tabulatorima umesto razmaka ili nerazdvojivom razmaku. Označi Zanemari razmake i uvlačenje da to potvrdiš.

Mogu li preuzetu zakrpu da primenim pomoću Gita?

Da. Sačuvaj je i pokreni patch original.js < changes.diff ili prilagodi nazive fajlova u zaglavlju i koristi git apply.

Koliko veliki mogu biti isečci?

Nekoliko hiljada redova se poredi brzo. Ako su dva veoma velika fajla potpuno različita, alat staje posle nekoliko sekundi i traži da uporediš manje delove.