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.
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 .
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 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.
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.diffAz 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.
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 .
Unix parancsok | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|