Shared

VPS

Dedicated

WP Professional

WP Professional Plus

Het “diff” gereedschap berekent de verschillen tussen twee tekstbestanden. Dat verschil wordt een patch genoemd. U kunt een patch toepassen op een ander bestand met het “patch” gereedschap.

diff en patch zijn bedoeld om te worden gebruikt op tekst bestanden. Bestanden die binair zijn of gemanipuleerd worden door speciaal gebouwde applicaties, zoals .doc, .pdf, .xlsx, of .wav bestanden, werken niet goed met diff en patch.

Waarom diff en patch gebruiken?

Reden 1: diff kan op zichzelf al nuttig zijn om te zien wat er tussen bestanden is veranderd, zelfs als u patch nooit gebruikt.

Reiding 2: Soms kun je patches van derden krijgen en die op je bestanden toepassen. Dit kan voordelig zijn in gevallen waarin de bestanden die worden gepatcht groot zijn, maar het aantal wijzigingen relatief klein is: het overbrengen van een patch-bestand is efficiënter dan het overbrengen van het hele bestand.

Reiding 3: U kunt patches toepassen op bestanden die niet perfect overeenkomen met het originele bestand dat in diff wordt gebruikt.
Bijv. als u een CMS gebruikt met een configuratiebestand, en lokale wijzigingen aanbrengt in dat configuratiebestand, wilt u die lokale wijzigingen behouden als u uw CMS upgrade. Als u de nieuwe configuratie van de leverancier kopieert naar uw versie, zullen uw wijzigingen verloren gaan. In veel gevallen kunt u echter veilig patch gebruiken om de wijzigingen van de leverancier van de meest recente versie toe te passen zonder uw eigen wijzigingen te verliezen.

Wat is diff?

diff is een manier om bestanden te vergelijken op verschillen (vandaar de naam “diff”) vanaf de commandoregel. Als je bijvoorbeeld een origineel bestand hebt, daar vervolgens wijzigingen in aanbrengt en het onder een andere naam opslaat, kun je de twee bestanden vergelijken met diff.

gebruik diff afbeelding

diff Syntax

diff wordt gebruikt in de commandoregel. De basis syntaxis van diff ziet er als volgt uit:

diff 

Dit commando zet de basisstructuur op voor het vergelijken van een bestand met een ander. Er zijn ook opties om meer functionaliteit aan een commando toe te voegen.

Basissyntax (zonder opties)

Vervang en met de werkelijke namen van de bestanden. Zorg ervoor dat de bestandsextensies bij de bestandsnamen staan. Een eenvoudig diff commando zonder opties kan er ongeveer zo uitzien:

diff file1.html file2.html

In dit voorbeeld vergelijkt het commando file1.html en file2.html en geeft de verschillen weer in de commandoregel.

diff Syntax (met opties)

diff opties voegen meer functionaliteit toe aan commando’s. Opties zullen echter de syntaxis van het commando een beetje veranderen.

diff opties komen tussen diff en de eerste bestandsnaam:

diff -y file1.html file2.html

Je kunt ook meerdere opties in één commando combineren. Doe dit door alle letters van de relevante opties toe te voegen na het streepje (-). Het ziet er dan ongeveer zo uit:

diff -uy file1.html file2.html

Je ziet ook wel een variant waarbij elke optie een eigen streepje (-) krijgt. Beide methoden om meerdere opties toe te voegen zijn geldig

diff -u -y file1.html file2.html

Zie hieronder voor een lijst van veelgebruikte opties:

Option Description
-N Geeft geen aandacht aan afwezige bestanden
-r voert diff recursief uit door een directory. Wordt gebruikt om meerdere bestanden tegelijk te vergelijken. Opmerking: dit is niet hetzelfde als -R, wat een patch-optie is
-u Vertoont de uitvoer in een gemakkelijker te lezen formaat. Dit kan sommige informatie verwijderen, zoals contextregels.
-y Dwingt de uitvoer om verschillen naast elkaar weer te geven.

Voor meer opties, zie deze lijst met diff opties van GNU.

diff uitvoer

Wanneer een diff commando wordt uitgevoerd, zal de basis uitvoer er ongeveer zo uitzien:

Het gebruik van de optie -y verandert de manier waarop de uitvoer wordt weergegeven

11c11< this is text from the original file---> this is the same line from the second, changed file

Alleen wijzigingen worden in de uitvoer weergegeven, zodat u niet door de twee bestanden hoeft te spitten. In plaats daarvan vergelijkt diff de wijzigingen en haalt ze eruit zodat je ze kunt bekijken.

Tip

De “>” en “<” tekens in diff uitvoer wijzen in de richting van het bestand waarin de inhoud is gevonden. Dus, voor het commando “diff file1 file2”, verwijst een “<” naar regels uit bestand1 en “>” verwijst naar regels uit bestand2.

content tip afbeelding

Hoe diff-uitvoer te lezen

Hier volgt een korte handleiding over het lezen van de uitvoer van diff.

De eerste regel van de uitvoer

De eerste regel in de uitvoer geeft de regelnummers aan die verschillen bevatten en het type wijzigingen dat is aangebracht.

afbeelding van de uitvoer

Als twee getallen worden gescheiden door een komma, betekent dit dat er wijzigingen zijn vanaf het eerste regelnummer tot en met het tweede. In de bovenstaande voorbeeldafbeelding zou 11,12 betekenen dat er wijzigingen zijn op regel 11 – 12.

De “c” die de regelnummers in het bovenstaande voorbeeld van elkaar scheidt, geeft het type wijziging aan dat is opgetreden. Er zijn verschillende letters die verschillende soorten wijzigingen aangeven:

Letter Betekenis
c Content werd vervangen
a Content is toegevoegd of toegevoegd
d Content is verwijderd

Wanneer patch wordt gebruikt, wat zal worden uitgelegd in de Wat is patch? zullen deze letters belangrijk zijn.

De rest van de uitvoer

De rest van de uitvoer betreft de werkelijke verschillen tussen bestanden.

De gewijzigde regels worden vermeld naast < of > haakjes. Drie streepjes (—) geven aan dat het einde van de regel van het eerste bestand verandert en het begin van die van het volgende bestand. Het ziet er dan zo uit:

< text from file one---> text from file two

Nu je een basiskennis hebt van diff, is het tijd om naar patch te gaan.

Wat is patch?

patch is een commando dat de uitvoer van de diff neemt en het in een bestand zet. Daarna kan het de uitvoer van het bestand nemen en een ander bestand overschrijven met de wijzigingen. Een veel voorkomend gebruik is bijvoorbeeld om de patch te gebruiken om wijzigingen van het gewijzigde bestand over te brengen naar het oorspronkelijke bestand, waardoor ze identiek worden. Hoewel dit ook kan worden bereikt door het gewijzigde bestand in het oorspronkelijke bestand te kopiëren/plakken, is patch veel sneller en efficiënter.

Hoe diff en patch samen te gebruiken

diff werkt door de wijzigingen tussen de twee bestanden of mappen te catalogiseren. Patch kan die wijzigingen overnemen, ze in een bestand zetten, en oudere versies ermee bijwerken.

patch opties

Het patch commando heeft ook zijn eigen set opties om functionaliteit toe te voegen. Hieronder vindt u een lijst met veelgebruikte opties:

-b Creëert een backup van het originele bestand
-i Dwingt het commando om de patch te lezen uit het .patch bestand in plaats van uit de standaard invoer
-p Instrueert het commando om # aantal slashes te strippen van het bestandspad naar de bestandsnaam. Je zult zien dat we in de meeste voorbeelden -p0 gebruiken, zodat er geen schuine strepen worden weggelaten
-R Herziet de vorige patch
-s Haalt het commando in stilte. Het toont alleen het proces als er fouten zijn

Voor meer opties, zie deze lijst van patch opties door GNU.

Een patch maken

Een patch bestand maken is de eerste stap voor het gebruik van patch en diff samen. Het patch bestand kan worden gebruikt om wijzigingen aan andere bestanden toe te voegen, en is dus nodig voor commando’s als Overschrijf het originele bestand met wijzigingen.

Om een patch bestand te maken, voert u het onderstaande commando in op de commandoregel:

diff -u file1.html file2.html > patchfile.patch

In het bovenstaande voorbeeld wordt de diff uitvoer opgeslagen in een bestand met de naam patchfile.patch. Verander bij het uitvoeren van het commando file1.html en file2.html in werkelijke bestandsnamen.

Overschrijven van bestanden met wijzigingen

Als het patchbestand eenmaal is gemaakt, kunt u het gebruiken om de wijzigingen naar een ander bestand te kopiëren. Bijvoorbeeld, u wilt bestand1 overschrijven met de wijzigingen van het bijgewerkte bestand2. Om dit te doen, zou je de volgende syntax kunnen gebruiken:

patch file1.html patchfile.patch

Vervang bestand1.html met je originele bestand. Dit zou de oude inhoud van bestand1.html overschrijven met de gewijzigde inhoud van bestand2.html.

Hoe een patch omkeren

Als u het bestand wilt terugzetten naar de vorige versie voordat u het patchte, kunt u dat doen door dit commando uit te voeren:

patch -p0 -R -i patchfile.patch

De commandoregel zal u dan vragen om de naam van het bestand dat u wilt terugdraaien in te voeren. Zodra de bestandsnaam is ingevoerd, zal het omkeerproces beginnen.

patch Directories

Het gebruik van diff en patch op hele directories is een vergelijkbaar proces als het gebruik op losse bestanden.

De eerste stap is het maken van een patch-bestand met behulp van het commando:

diff -ruN folder1/ folder2/ > patchfile.patch

Dan geef je het commando om de originele map te patchen, in dit geval is dat map1:

patch -s -p0 < patchfile.patch

Als dat lukt, zou je originele map nu bijgewerkt moeten zijn om overeen te komen met de tweede, bijgewerkte map.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *