Korjaustiedosto (Unix)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 25. elokuuta 2021 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .

laastari
Tyyppi UNIX [d] -apuohjelma
Kehittäjä Andreas Gruenbacher, Jim Meyering
Käyttöjärjestelmä Monialustainen ohjelmisto
Ensimmäinen painos 1985
uusin versio
Lisenssi GPL
Verkkosivusto savannah.gnu.org/project…

patch on Unix -  ohjelmisto , joka on suunniteltu siirtämään muokkauksia (muutoksia) tekstitiedostojen eri versioiden välillä. Muokkaustiedot sisältyvät yleensä erilliseen tiedostoon, jota kutsutaan nimellä "patch", "edit" tai "edit file" (" korjaustiedosto " - englanniksi  patch file ). Tällainen tiedosto luodaan yleensä toisella Unix-apuohjelmalla diff , joka poimii automaattisesti tiedot tiedostojen tekstien eroista.

Historia

Alkuperäisen korjaustiedoston kirjoitti tuleva Perl -kirjailija Larry Wall ( lähetetty mod.sourcesille ). Nykyään korjausohjelma on osa GNU - projektia ja sitä ylläpitää FSF .

Käyttö

Vaikka ohjelman alkuperäinen tarkoitus oli yhdistää erot ohjelmatiedostojen versioiden välillä (jotta ohjelmoija, joka teki hyödyllisiä muutoksia ohjelmaansa, voisi jakaa muutokset muiden ohjelmoijien kanssa, jotka käyttävät koodin aiempia versioita), korjaustiedostoa voidaan käyttää silloittamaan eroja. minkä tahansa kahden tekstitiedoston välillä, mukaan lukien, mutta ei rajoittuen, ohjelman dokumentaatio, html-tiedostot ja niin edelleen.

Paikkausapuohjelman käyttämät "muutostiedostot" tai "korjaukset" tai epävirallisesti "korjaukset" ("korjaustiedostot", "korjaukset") ovat tekstitiedostoja erityisessä muodossa. Toisin kuin he, on olemassa myös samankaltaisia ​​binääritiedostoja, mutta jälkimmäisillä ei yleensä ole mitään tekemistä korjausapuohjelman kanssa ja ne liittyvät tehtäviin tehdä muutoksia binääritiedostoihin (ei-teksti) mukaan lukien ohjelma suoritettavat tiedostot.

Korjaustiedostojen sisältö

Diff-työn tuloksena syntyvillä tiedostoilla on tietty muoto, joka on kätevä muun muassa käyttäjän itsensä "manuaalisesti" luettavaksi ja muokkaamiseksi.

Esimerkki tällaisen tiedoston sisällöstä:

--- a/polku/tiedostoon 2021-01-26 22:55:55.288371691 +0300 +++ b/polku/tiedostoon 2021-01-26 22:58:31.790414616 +0300 @ -8. @@ +#sisällytä <stdio.h> + int -main(void) +main(int argc, char** argv) { + printf("%s: Esimerkki `diff" käytöstä;\n", __TIEDOSTO__); paluu 0; }

Kolminkertaisella miinusmerkillä alkava rivi (yksinkertaisimmassa tapauksessa ensimmäinen rivi) sisältää suhteellisen polun alkuperäiseen tiedostoon ja viimeisen muokkausajan. Seuraavalla rivillä, kolminkertaisen plusmerkin jälkeen, on korjaustiedoston luomiseen käytetyn tiedoston lopullisen version suhteellinen polku ja viimeksi muokattu aika.

Lisäksi rivillä, joka alkaa ja päättyy kaksoissymboliin "@" "miinus"-merkin jälkeen, kyseisen tekstiosan alun rivinumero ja rivien määrä, jonka tämä osio vei tiedoston vanhassa versiossa on merkitty ja "plus"-merkin jälkeen uuden tiedoston osion samanlaiset ominaisuudet. Alla on itse osa, jossa jokaisen rivin alkuun lisätään välilyönti, jos rivi ei ole muuttunut, "miinus", jos sitä ei ole uudessa tiedostossa, ja vastaavasti "plus", jos tämä rivi on lisätty. Yllä olevassa esimerkkitiedostossa on vain yksi tällainen segmentti, mutta niitä voi olla kuinka monta tahansa. Lisäksi korjaustiedosto voi sisältää tietoja muutoksista, jotka on tehty muihin tiedostoihin, jos komentoa diffkäytettiin hakemistoon.

Hyvin usein korjaus tapahtuu jonkinlaisen versionhallintajärjestelmän käytön yhteydessä . Jos muutostiedosto on luotu käyttämällä jotakin niistä, esimerkiksi git , muoto ei ole olennaisesti erilainen, se voi yksinkertaisesti sisältää lisätietoa, joka on tarpeetonta apuohjelmalle patch.

Käyttöesimerkki

Voit luoda korjaustiedoston tai muokata tiedostoa diff-apuohjelman avulla suorittamalla:

$ diff -u vanha_tiedosto uusi_tiedosto > diff.diff # Kytkin -u käskee diff tulostamaan eron niin sanotussa "standardissa" ("yhteistetty") muodossa

Asenna tuloksena oleva korjaustiedosto suorittamalla seuraava komento:

$ patch < different.diff

Viimeisen komennon suorittaminen siirtää eron uudesta tiedostosta vanhaan ja päivittää vanhan tiedoston. (Jos vanhaa tiedostoa ei löydy annetusta polusta, ohjelma antaa virheilmoituksen.)

Paikka voidaan "palauttaa" eli peruuttaa siirtämällä -R-kytkin korjausohjelmaan:

$ patch -R < ero.diff

Patch-apuohjelma pystyy pääsääntöisesti päivittämään tiedoston oikein, vaikka se olisi jonkin verran muuttunut (esimerkiksi sitä on muokattu alueella, joka ei mene päällekkäin nykyisen korjaustiedoston laajuuden kanssa).

Tätä varten korjaustiedoston apuohjelma käyttää "kontekstia" - muutamaa riviä korjaustiedoston laajuuden vieressä, tallennettuna muokkaustiedostoon muiden korvaamista koskevien tietojen kanssa.

Kuitenkin, jos korjaustiedoston asennuksen ("käytetty") ja korjaustiedoston luomiseen käytetyn lähdetiedoston välillä on merkittävä ero, korjaustiedoston asentamisen oikeellisuutta ei yleisesti ottaen taata.

Siirtäminen (siirtäminen muille alustoille)

Unix-järjestelmiin luotu korjausapuohjelma on sittemmin siirretty Windows -alustalle ja useille muille. Windows-korjausversiot löytyvät GnuWin32- ja UnxUtils -paketeista sekä Cygwin - ympäristöstä .

Katso myös

  • Peitto
  • rsync
  • IEBUPDTE on analoginen korjausohjelmalle, joka luotiin noin 20 vuotta aikaisemmin (oletettavasti vuonna 1964 System 360 -keskikoneille ).

Muistiinpanot

  1. https://git.savannah.gnu.org/cgit/patch.git/tag/?h=v2.7.6

Linkit

  • patch(1): diff-tiedoston käyttäminen alkuperäiseen - GNU / Linux mukautettujen komentojen man -sivulle  
  • Patchutils  - Lisäohjelmat korjaustiedostojen kanssa työskentelemiseen
  • GNU-työkalut Win32:lle  - GNU-apuohjelmien Win32-portti, mukaan lukien diff ja patch
  • diffstat  - tilastojen julkaiseminen diff-apuohjelman tulosten perusteella