Utilia

Kodo palyginimas (diff)

Palygink dvi kodo versijas šalia viena kitos ar viename stulpelyje su sintaksės paryškinimu, eilučių numeriais ir unified diff, kurį gali nukopijuoti.

Kaip palyginti du kodo fragmentus

  1. Įklijuok seną versiją į Originalus kodas, o naują – į Pakeistas kodas.
  2. Pasirink Kalba arba palik Aptikti automatiškai: įrankis nuspėja pagal kodą ir greta statistikos parodo aptiktą kalbą.
  3. Pasirink Vaizdas: Šalia viena kitos arba Viename stulpelyje (unified).
  4. Nustatyk reikiamas parinktis: Ignoruoti tarpus ir įtrauką, Ignoruoti raidžių registrą, Paryškinti pakeistus žodžius ir Rodyti tik pakeitimus (3 eilutės konteksto).
  5. Spustelėk Palyginti. Po pirmo palyginimo rezultatas seka tavo pakeitimus, kol rašai.
  6. Spustelėk Kopijuoti kaip unified diff arba Atsisiųsti .diff, kad pakeitimą galėtum panaudoti kaip pataisą (patch).

Sukeisti puses sukeičia dvi versijas vietomis, todėl pridėjimai tampa pašalinimais ir atvirkščiai.

Kaip skaityti skirtumus

Pašalintos eilutės nuspalvintos raudonai ir priklauso originalui; pridėtos eilutės nuspalvintos žaliai ir priklauso naujai versijai. Kiekviena eilutė išlaiko savo numerį iš savo failo, todėl redaktoriuje gali iš karto į ją peršokti.

  • Šalia viena kitos padeda du failus į du sunumeruotus stulpelius. Pakeista eilutė stovi šalia savo naujos versijos. Su Paryškinti pakeistus žodžius pažymimi toje eilutėje pasikeitę žodžiai; be jos abi eilutės išlaiko visas sintaksės spalvas.
  • Viename stulpelyje (unified) rodo vieną stulpelį kaip kodo peržiūroje: kiekvienam pakeistam blokui pirma eina pašalintos eilutės (−), po jų pridėtos (+), su senais ir naujais eilučių numeriais.
  • Rodyti tik pakeitimus (3 eilutės konteksto) ilgus nepakeistus ruožus sutraukia į žymę „⋯ nepakeistų eilučių: N“, todėl dideles bylas peržiūrėti daug lengviau.

Statistikos eilutė suskaičiuoja pridėtas, pašalintas ir nepakeistas eilutes.

Sintaksės paryškinimas

Paryškinimas atliekamas tavo naršyklėje su highlight.js. Pirmą kartą lyginant įkeliama tik pasirinktos kalbos gramatika, todėl puslapis išlieka lengvas. Palaikomos kalbos: JavaScript, TypeScript, Python, Java, C#, C / C++, Go, Rust, PHP, Ruby, CSS, HTML / XML, JSON, YAML, SQL, Bash / Shell ir Markdown. Automatinis aptikimas naudoja paprastus požymius (raktažodžius, skliaustus, JSON analizę); jei apsirinka, pasirink kalbą pats arba rinkis Paprastas tekstas.

Tarpai, įtrauka ir eilučių pabaigos

Ignoruoti tarpus ir įtrauką lygina eilutes jas apkarpius ir sutraukus tarpų bei tabuliacijų sekas, todėl failas, kurio įtrauka pakeista iš 2 į 4 tarpus ar iš tabuliacijų į tarpus, skirtumų nerodo. Windows (CRLF) ir Unix (LF) eilučių pabaigos prieš lyginimą suvienodinamos, todėl failas, kuriame pasikeitė tik eilučių pabaigos, laikomas vienodu. Atsimink, kad Python, YAML ir Makefile tarpai gali turėti reikšmę: išjunk parinktį, kai įtrauka svarbi.

Unified diff formatas

Eksportuota pataisa naudoja standartinį unified formatą, kurį skaito git apply, patch ir kodo peržiūros įrankiai: antraštė su dviem failų pavadinimais, tada dalys, prasidedančios @@ -a,b +c,d @@, ir trys konteksto eilutės aplink kiekvieną pakeitimą. Failai pavadinami original ir changed su kalbos plėtiniu.

Dažnai užduodami klausimai

Ar mano kodas įkeliamas į serverį?

Ne. Ir palyginimas, ir paryškinimas vyksta vietoje, tavo naršyklėje; kodas niekada nepalieka tavo įrenginio.

Kuo tai skiriasi nuo teksto palyginimo įrankio?

Naudojamas tas pats eilutė po eilutės lyginimo variklis, bet pridėtas sintaksės paryškinimas, unified vaizdas, konteksto sutraukimas ir kodui pritaikytas tarpų tvarkymas.

Kodėl dvi eilutės rodomos kaip pakeistos, nors atrodo vienodos?

Tikriausiai jos skiriasi nematomais simboliais: tarpais eilutės gale, tabuliacijomis vietoj tarpų ar nepertraukiamu tarpu. Pažymėk Ignoruoti tarpus ir įtrauką, kad įsitikintum.

Ar parsisiųstą pataisą galiu pritaikyti su Git?

Taip. Išsaugok ją ir paleisk patch original.js < changes.diff arba pritaikyk failų pavadinimus antraštėje ir naudok git apply.

Kokio dydžio gali būti fragmentai?

Kelių tūkstančių eilučių fragmentai lyginami greitai. Jei du labai dideli failai visiškai skirtingi, įrankis po kelių sekundžių sustoja ir paprašo palyginti mažesnes dalis.