Slik bruker du en oppdatering på en fil ved hjelp av Linux
En patch er et segment av datakode som setter inn eller modifiserer et eksisterende kodesett. Patcher brukes ofte under programmeringsprosessen for å erstatte endringer i kildekoden. Linux inkluderer en patchutility for å effektivisere denne prosessen.
Patching-prosessen brukes vanligvis i formelle endringskontrollsystemer, der profesjonelle beste praksiser for kodekvalitet og testing er i kraft. Patching er mindre vanlig i hobbyprosjekter der kildekoden endres etter programmererens skjønn.
Lappeprosessen
I et typisk brukstilfelle har du en originalversjon av din kildekode og en modifisert versjon av den. Originalen er formelt godkjent, og eventuelle endringer i den må følge en veldefinert prosess. Disse endringene skjer i en patch-fil.
Ved hjelp av et verktøy som heter diff, redusere forskjellene mellom de to filversjonene til en enkelt fil som viser de spesifikke endringene som den andre gjør i den første.
Deretter endrer den resulterende forskjellsfilen den opprinnelige koden ved å bruke lapp verktøy.
Bruk av patcher: et eksempel
Tenk på et typisk "Hello World"-program. Kilden kode i C ser slik ut:
#inkludere
int main()
{
printf("Hei verden!");
}
For å endre den utskrevne meldingen til Hei universet!, utvikle en alternativ versjon av koden, som følger:
#inkludere
int main()
{
printf("Hei universet!");
}
Generer en patch-fil ved å bruke diff nytte:
diff -u helloworld.c helloworld2.c > fil.patch.
Du vil da se at oppdateringsfilen ser slik ut:

Patch-filen viser hver sammenlignet fil. Den tilbyr symboler, og +++, som identifiserer hvert filnavn med sin siste reviderte dato. Deretter oppsummerer den plasseringen av endringene mellom et par @@ symboler. Til slutt viser den kildekoden, og markerer de forskjellige linjene ved å bruke de bemerkede pluss-og-minus-symbolene. Vanligvis indikerer minustegnet at linjen er fjernet i den korrigerte filen og plusstegnet representerer en erstatning hvis linjen skal erstattes.
For å bruke oppdateringsfilen til den originale filen, kjør:
patch < fil.patch.
På det tidspunktet endres den første filen for å matche den andre.
For å angre oppdateringen, bruk -R alternativ:
patch -R < fil.patch.
Betraktninger
Denne tilnærmingen til å lappe kildekode er mindre vanlig enn den pleide å være. Moderne kildekontrollsystemer som Git og Subversion administrerer automatisk versjoner over tid, inkludert langs forskjellige utviklings- og testgrener, slik at manuell forskjellskontroll og filoppdatering nå administreres av versjonskontrollen verktøy. Hvis du må følge en formell kodestruktur eller samsvare med teamkodingsstandarder, bruker du et verktøy som Git i stedet.
Imidlertid en effektiv brukssak for diff og lapp system på en lokal maskin er relatert til endringer i en hel katalog med filer. For eksempel, hvis du utviklet et nettsted, men bare trenger å gjøre en endring på en enkelt linje – som en opphavsrettslinje – oppdaterer dette systemet alle disse sidene samtidig.
Se man-sidene for lapp for ytterligere kontekst.