Javítás (Unix)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. augusztus 25-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

tapasz
Típusú UNIX [d] segédprogram
Fejlesztő Andreas Gruenbacher, Jim Meyering
Operációs rendszer Többplatformos szoftver
Első kiadás 1985
legújabb verzió
Engedély GPL
Weboldal savannah.gnu.org/project…

A patch egy Unix -  szoftver - segédprogram , amelyet a szövegfájlok különböző verziói közötti szerkesztések (módosítások) átvitelére terveztek. A szerkesztéssel kapcsolatos információk általában egy külön fájlban találhatók, úgynevezett "patch", "edit" vagy "edit file" (" patch file" - angol patch file ). Az ilyen fájlokat általában egy másik Unix segédprogram, a diff segítségével hozzák létre , amely automatikusan kivonja az információkat a fájlok szövegének különbségeiről.  

Történelem

Az eredeti javítóprogramot a jövőbeli Perl -szerző, Larry Wall írta ( a mod.sources oldalon ). Ma a javítóprogram a GNU Project része, és az FSF karbantartja .

Használat

Míg a programok eredeti célja a programfájlok verziói közötti különbségek áthidalása volt (hogy a programjában hasznos változtatásokat végrehajtó programozó megoszthassa ezeket a változtatásokat más programozókkal a kód korábbi verzióit használva), a javítás használható a különbségek áthidalására. bármely két szövegfájl között, beleértve, de nem kizárólagosan a programdokumentációt, html fájlokat és így tovább.

A javítási segédprogram által használt "változtatási fájlok" vagy "javítások" vagy informálisan "javítások" ("javítófájlok", "javítások") speciális formátumú szövegfájlok. Ellentétben velük, vannak hasonló célú bináris fájlok is, azonban az utóbbiaknak általában semmi közük a javító segédprogramhoz, és a bináris (nem szöveges) fájlok módosításának feladataihoz kapcsolódnak, beleértve a programokat is. futtatható fájlok.

A javítási fájlok tartalma

A diff munka eredményeként létrejött fájlok egy bizonyos formátummal rendelkeznek, amely többek között kényelmes a felhasználó általi "kézi" olvasáshoz és szerkesztésekhez.

Példa egy ilyen fájl tartalmára:

--- a/elérési út/fájlhoz 2021-01-26 22:55:55.288371691 +0300 +++ b/elérési út/fájlhoz 2021-01-26 22:58:31.790414616 +0300 @ 1.8. @@ +#include <stdio.h> + int -main(void) +main(int argc, char** argv) { + printf("%s: Példa `diff` használatára;\n", __FILE__); visszatérés 0; }

A hármas mínuszjellel kezdődő sor (legegyszerűbb esetben az első sor) tartalmazza az eredeti fájl relatív elérési útját és az utolsó módosítás idejét. Ezután a következő sorban a hármas pluszjel után a javítás létrehozásához használt fájl végső verziójának relatív elérési útja és utolsó módosítási ideje látható.

Továbbá a "@" kettős jellel kezdődő és végződő sorban a "mínusz" jel után az adott szövegrész elejének sorszáma, valamint azon sorok száma, amelyeket ez a rész foglalt a fájl régi verziójában A „plusz” jel után az új fájl szakaszának hasonló jellemzői vannak feltüntetve. Az alábbiakban maga a szakasz látható, ahol minden sor elejére szóköz kerül, ha a sor nem változott, „mínusz”, ha nincs az új fájlban, és ennek megfelelően „plusz”, ha ez a sor hozzáadásra került. A fenti példafájlban csak egy ilyen szegmens található, de ezekből tetszőleges számú lehet. Ezenkívül a javítás információkat tartalmazhat más fájlokon végrehajtott módosításokról is, ha a parancsot diffegy könyvtárra alkalmazták.

Nagyon gyakran a javítás valamilyen verzióvezérlő rendszer használata során történik . Ha a módosítófájlt ezek valamelyikével hozták létre, például a git használatával , akkor a formátum nem lesz alapvetően más, egyszerűen csak további információkat tartalmazhat, amelyek a segédprogram számára feleslegesek patch.

Használati példa

Javítás létrehozásához vagy fájl szerkesztéséhez a diff segédprogrammal futtassa a következőt:

$ diff -u régi_fájl új_fájl > diff.diff # A -u kapcsoló azt mondja a diff-nek, hogy a különbséget az úgynevezett "standard" ("egyesített") formátumban írja ki.

Az eredményül kapott javítás alkalmazásához futtassa a következő parancsot:

$ patch < különbség.diff

Az utolsó parancs futtatása átviszi a különbséget az új fájlból a régibe, frissítve a régi fájlt. (Ha a régi fájl nem található a megadott elérési úton, a program hibát jelez.)

A patch "visszatekerhető", azaz törölhető, ha a -R kapcsolót átadja a patch programnak:

$ patch -R < különbség.diff

Általános szabály, hogy a javítási segédprogram akkor is képes megfelelően frissíteni a fájlt, ha az valamelyest módosult (például olyan területen szerkesztették, amely nem fedi át az aktuális javítás hatókörét).

Ehhez a javítási segédprogram "kontextust" használ – néhány sort a javítás hatóköre mellett, a szerkesztőfájlban tárolva a cserével kapcsolatos egyéb információkkal együtt.

Abban az esetben azonban, ha jelentős eltérés van a fájl, amelyre a javítást alkalmazták („applied”), és a javítás létrehozásához használt forrásfájl között, általánosságban véve nem garantált a javítás helyessége.

Portolás (más platformokra történő portolás)

A Unix rendszereken való használatra készült javítási segédprogram azóta átkerült a Windows platformra és sok másra. A Windows javítási verziói megtalálhatók a GnuWin32 és UnxUtils csomagokban, valamint a Cygwin környezetben .

Lásd még

  • Paplan
  • rsync
  • Az IEBUPDTE a patch program analógja, amelyet körülbelül 20 évvel korábban készítettek (feltehetően 1964-ben System 360 nagyszámítógépekhez ).

Jegyzetek

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

Linkek

  • patch(1): diff fájl alkalmazása az eredeti - GNU / Linux egyéni parancsok kézikönyvoldalára  
  • Patchutils  - További programok a javításokkal való munkához
  • GNU eszközök a Win32 -hez  – a GNU segédprogramok Win32 portja, beleértve a diff-et és a javítást
  • diffstat  - statisztikák kiadása a diff segédprogram kimenete alapján