Deze handleiding biedt een basisoverzicht voor het toepassen van een patch op een programma of bestand.
De opdracht die wordt gebruikt voor het toepassen van patches is de opdracht patch, maar om een patch toe te passen, moet de opdracht diff ook worden gebruikt om de verschillen op te leveren die moeten worden gepatcht.
Waarom zou je een patch maken?
Stel je voor dat je een HTML-bestand had als volgt:
Welkom bij MySite
De bovenstaande bron, wanneer geladen in een webbrowser, toont de woorden "Welkom bij MySite".
Het is gebruikelijk om te programmeren voor meerdere versies van hetzelfde bestand. Er zou bijvoorbeeld een versie zijn die de huidige live versie is, er zou een andere versie op de ontwikkelingstak zijn die meerdere wijzigingen zou kunnen bevatten, en tenslotte zou er een andere versie op een releasetak kunnen zijn.
De releasetak zou de versie zijn die wordt gebruikt door echte gebruikers (d.w.z. in dit geval bezoekers van de MySite-website). Laten we zeggen dat MySite op versie 1.0 staat. Na een ontwikkelingsfase maak je een releasetak die in dit geval 1.1 is. De ontwikkelingstak loopt voor op de releasetak omdat deze mogelijk wijzigingen bevat die niet voor versie 1.2 beschikbaar zijn, maar voor versie 1.1.
Stel je voor dat er een bug was waardoor MySite YourSite zou moeten heten. Je zou om beurten naar elk filiaal kunnen gaan en wijzigingen in de liveversie, de ontwikkelversie en de releaseversie van je kunnen maken om de wijziging als een hotfix in live te maken en de patch vervolgens op de ontwikkel- en releasestructuren toepassen.
Een bewerkt voorbeeld
Maak een bestand met de naam myfile.html met de volgende code erin:
Welkom bij MySite
Dit is een goed voorbeeld van het patchen van broncode.
Maak een ander bestand met de naam myfile_v2.html met de volgende code erin:
Welkom bij YourSite
Dit is een goed voorbeeld van het patchen van broncode.
Het eerste bestand is de originele webpagina met de kop "Welkom bij MySite". Het tweede bestand is hetzelfde als het eerste bestand, behalve dat MyFile in de tekst is hernoemd naar YourFile.
Hoe het Diff-bestand te maken
Om een patch te maken, moeten we de verschillen tussen myfile.html en myfile_v2.html berekenen.
We kunnen dit als volgt doen met het commando diff:
diff -u myfile.html myfile_v2.html> mijnbestand.patch
U kunt het bestand myfile.patch als volgt in de nano-editor openen om het te bekijken: nano mijnbestand.patch
Lijnen die ongewijzigd zijn, worden blauw weergegeven. Lijnen die zijn verwijderd, worden in het rood weergegeven en de regels die zijn toegevoegd, worden groen weergegeven. Als u de patch op myfile.html wilt toepassen, gebruikt u de volgende opdracht: patch <mijnbestand.patch Hiermee worden de wijzigingen toegepast die met de opdracht diff zijn gemaakt op het oorspronkelijke bestand myfile.html. Als u de patch wilt terugzetten zodat myfile.html terug is zoals het oorspronkelijk was, gebruikt u de volgende opdracht: patch -R <mijnbestand.patch De opdracht patch kan worden gebruikt om patches toe te passen op een hele directorystructuur. Er zijn veel betere tools dan de patchopdracht voor het maken van patches en zorgen voor een goede broncontrole. Er is een reden dat zoveel ontwikkelingsprojecten GIT gebruiken voor bronbesturing. GIT maakt het eenvoudig om een consistente vertakkingsstrategie te creëren. De patch-opdracht is in orde voor het toepassen van verschillen op een bash-script of iets eenvoudigs, maar je kunt net zo gemakkelijk een back-up maken van de bestanden die je wilt patchen en de nieuwe bestanden gewoon naar dezelfde plek kopiëren. Gebruik de opdracht man voor meer informatie: man patch Hoe de patch toe te passen met behulp van de patchopdracht
Hoe een patch terug te zetten
Samenvatting