Naar de inhoud
HexSlate

Text Diff

Oorspronkelijke tekst0
Gewijzigde tekst0

Hoe de vergelijking wordt gemaakt

Een Myers diff (Myers, 1986), het algoritme dat Git standaard gebruikt, via jsdiff. Woordniveau verfijnt dat in plaats van het te vervangen: alleen regels die al als gewijzigd zijn gemarkeerd krijgen een tweede ronde op woordniveau.

De twee panelen lopen niet regel voor regel gelijk. Uitlijnen vraagt lege opvulregels aan de kortste kant, en deze panelen zijn bewerkbare tekstvakken: een opvulregel is een regel waar je in kunt klikken en typen. Elk paneel toont daarom alleen de regels die die kant heeft.

Veelvoorkomende problemen

  • Elke regel is gewijzigd terwijl de tekst hetzelfde lijkt. Onzichtbare tekens: een spatie aan het eind, een tab tegen spaties, CRLF tegen LF. Whitespace negeren knipt elk regeleinde af voor het vergelijken; een rij spaties midden in de regel telt nog wel mee.
  • Kopiëren als .patch trekt zich niets aan van de drie opties om iets te negeren. De patch wordt gebouwd uit de twee teksten precies zoals ze geplakt zijn. Een patch wordt toegepast door zijn contextregels teken voor teken tegen het echte bestand te leggen, dus context met afgeknipte inspringing, gevouwen hoofdletters of verwijderde lege regels zou nergens op passen.
  • Lege regels negeren verandert de regelnummers. Lege regels worden voor het vergelijken verwijderd, niet overgeslagen bij het melden, dus de nummers volgen de gefilterde tekst.

Veelgestelde vragen

Wat kan ik met de unified patch?

Hetzelfde formaat dat git diff uitprint, behalve dat de paden in de header gewone bestandsnamen zijn zonder a/ en b/ voorvoegsel. Niets af te knippen dus: pas hem toe met patch -p0 < patch.diff vanuit de map waar het bestand staat, of plak hem in een reactie op een pull request.

Wordt mijn tekst ergens geüpload?

Nee. Beide kanten worden in dit tabblad vergeleken en er gaat niets naar buiten of naar de adresbalk. Dat telt zwaarder dan het klinkt bij een diff-tool: wat mensen het vaakst vergelijken zijn configuratiebestanden en contractversies.

Kan ik twee bestanden vergelijken in plaats van plakken?

Open elk bestand en plak de inhoud. Er is hier geen bestandskiezer, want een diff gaat bijna altijd over twee dingen die je al open hebt, en plakken is sneller dan twee keer door een bestandsvenster.

Waarom markeert één veranderde spatie de hele regel?

Omdat de regel echt veranderd is, en een diff die dat verbergt zou liegen. Zet Whitespace negeren aan als je naar betekenis kijkt in plaats van naar opmaak; zet het uit als een spatie aan het eind de bug is die je zoekt.

Gebruikt dit hetzelfde algoritme als git diff?

Dezelfde familie. De standaard van Git is Myers. De alternatieven --patience en --histogram, die beter lezen op code met herhaalde regels, zitten hier niet in.