Mis see tööriist on?
Diff (erinevuse) tööriist võrdleb kahte teksti ja näitab minimaalset muudatuste hulka, mis muudab ühe teiseks. Nii kuvavad versioonihaldussüsteemid nagu Git koodimuudatusi, ja see on sama kasulik konfiguratsioonifailide, lepingute, artiklite või mis tahes kahe versiooni võrdlemiseks.
See tööriist võrdleb rea kaupa, kasutades sama alusalgoritmi perekonda (pikim ühine alamjada) mis klassikalised diff-utiliidid, seega loeb väljund nagu tuttav koodiülevaatus: + lisatud ridade jaoks, − eemaldatud ridade jaoks.
Miks seda kasutada?
- Näe, mis kahe versiooni vahel tegelikult muutus, selle asemel et neid pealtnäha võrrelda.
- Tuttav git-stiilis väljund: rohelised lisandused, punased kustutused, kontekstiread nende vahel.
- Kokkuvõtlik lisatud ja eemaldatud ridade arv ühe pilguga.
- Töötab mis tahes tekstiga — kood, konfiguratsioonid, dokumendid, nimekirjad.
- Privaatne: mõlemad tekstid jäävad su brauserisse, midagi ei laadita üles.
Kuidas kasutada
- Kleebi algne tekst vasakusse kasti.
- Kleebi muudetud versioon paremasse kasti.
- Klõpsa "Võrdle".
- Loe tulemust: rohelised read lisati, punased read eemaldati, tavalised read on muutmata.
Näide
Sisend
Algne:
rida üks
rida kaks
rida kolm
Muudetud:
rida üks
rida 2
rida kolmTulemus
rida üks
− rida kaks
+ rida 2
rida kolmKeskmine rida muudeti, mida diff näitab vana rea eemaldamise ja uue rea lisamisena.
Levinud kasutusjuhud
- Tehisaru ümberkirjutatud lõigu ülevaatamine: kleebi algne ja tehisaru versioon, et näha täpselt, millised laused muutusid, ilma et peaks kogu teksti uuesti läbi lugema, et muudatusi märgata.
- Kahe lepingumustandi võrdlemine: juriidilised parandused on sageli lihtsam vaadata rea-diffina kui jälgitud muudatustena, kui dokument on versioonide vahel ümber vormindatud.
- Konfiguratsioonifaili kontrollimine pärast juurutust: kleebi .env või YAML faili enne/pärast versioon, et kinnitada, et muutusid ainult kavandatud read.
- Tõlgitud teksti versioonide võrdlemine: näe, milliseid ridu tõlkija või toimetaja mustandite vahel tegelikult muutis.
Piirangud, mida teada
See on rea-tasandi diff, mitte sõna-tasandi diff — kui liigutad lõigu dokumendi algusest lõppu ilma teksti muutmata, kuvatakse see täieliku kustutuse ja täieliku lisandusena, mitte "liigutatud" märkena. Lõikeohtrikkuse teksti puhul, kus lauses muutub vaid mõni sõna, tõstaks sõna-tasandi diff vähem teksti esile, kuid rea-tasandi on koodi, konfiguratsioonide ja struktureeritud dokumentide standard ning sellele see tööriist keskendub.
Kuidas võrdlusalgoritm töötab
Tööriist leiab kahe teksti vahelise pikima ühise alamjada (LCS) — suurima ridade komplekti, mis esineb mõlemas versioonis samas suhtelises järjekorras, isegi kui nende vahele on lisatud või eemaldatud teisi ridu. Kõik selles ühises alamjadas kuvatakse muutmata kontekstina; kõik muu klassifitseeritakse kas eemaldatuna (esineb ainult algversioonis) või lisatuna (esineb ainult uues versioonis). See on sama põhialgoritm, mis on Unixi diff-utiliidi ja Giti rea-kaupa võrdluse taga, mistõttu väljundvorming näib kohe tuttav, kui oled kunagi pull requesti üle vaadanud.
Üks praktiline tagajärg: kui rida esineb dokumendis mujal dubleeritult (täpselt sama tekst esineb kaks korda), sobitab algoritm selle iga esinemisega, mis hoiab üldise diffi väikseimana — mõnikord tekitades veidi teistsuguse paaristuse kui intuitiivselt ootaksid, kuigi lõplikud lisatud/eemaldatud ridade arvud on alati täpsed, olenemata sellest, milline duplikaat millisega sobitati.
Korduma kippuvad küsimused
Kas see võrdleb sõna kaupa või rea kaupa?
Rea kaupa, nagu git diff. Muudetud rida kuvatakse ühe eemalduse ja ühe lisandusena. Rea-tasandi võrdlused on koodi ja konfiguratsioonide standard ning jäävad loetavaks ka suurte tekstide puhul.
Miks näitab väike muudatus kogu rida muudetuna?
Sest võrdluse ühik on rida — mis tahes muudatus selle sees märgib kogu rea. Jaota pikad lõigud lühemateks ridadeks, kui vajad peenemat granulaarsust.
Kas tühik on oluline?
Jah. Read peavad täpselt kokku minema, seega muudab lõputühik või erinev taane read erinevaks. See on tahtlik — tühikuerinevused on koodis ja konfiguratsioonides reaalsed erinevused.
Kas on suuruspiirang?
Kõva piirangut pole, kuid väga suured tekstid (kümned tuhanded read) võivad võtta hetke, sest võrdlus toimub kohalikult sinu seadmes.
Kas mu tekstid laaditakse võrdlemiseks üles?
Ei. Diff-algoritm töötab täielikult su brauseris JavaScriptiga. Mõlemad tekstid jäävad sinu seadmesse — turvaline lepingute, sisemiste dokumentide ja avaldamata koodi jaoks.