patch (Unix) - patch (Unix)

náplast
TuxOnIce patching.png
Snímek obrazovky s použitím opravy.
Původní autoři Larry Wall
Vývojáři Paul Eggert, Wayne Davison, David MacKenzie, Andreas Grünbacher
První vydání 24. května 1985 ; Před 36 lety ( 1985-05-24 )
Operační systém Unix a podobné Unix , MSX-DOS , Microsoft Windows
Plošina Cross-platform
Typ Příkaz
webová stránka savannah .gnu .org / projects / patch / Upravte to na Wikidata

Oprava počítačového nástroje je unixový program, který aktualizuje textové soubory podle pokynů obsažených v samostatném souboru, který se nazývá soubor opravy . Soubor opravy ( zkráceně také nazývaný patch ) je textový soubor, který se skládá ze seznamu rozdílů a je vytvořen spuštěním souvisejícího programu diff s původním a aktualizovaným souborem jako argumenty. Aktualizace souborů pomocí opravy se často označuje jako použití opravy nebo jednoduše oprava souborů.

Dějiny

Původní opravný program napsal Larry Wall (který pokračoval v vytváření programovacího jazyka Perl ) a zveřejnil jej mod.sources(který se později stal comp.sources.unix) v květnu 1985. Varianta programu (ale ne jediná) je součástí projektu GNU a je udržován FSF .

Kontext použití

Oprava vyvinutá programátorem pro jiné programátory se často používala pro aktualizaci zdrojového kódu na novější verzi. Z tohoto důvodu přišlo mnoho lidí spojit opravy se zdrojovým kódem, zatímco opravy lze ve skutečnosti použít na jakýkoli text. Oprava souborů neshromažďuje žádný nepotřebný text, což někteří lidé vnímají na základě anglického významu slova; oprava dokáže odstranit text stejně jako jej přidat.

Opravy popsané zde by neměly být zaměňovány s binárními opravami , které, i když mohou být koncepčně podobné, jsou distribuovány za účelem aktualizace binárních souborů obsahujících program na nové vydání.

Opravy při vývoji softwaru

Soubory diff, které slouží jako vstup do opravy, jsou čitelné textové soubory, což znamená, že je lze před použitím snadno zkontrolovat nebo upravit lidmi.

Kromě programu „ diff “ mohou být rozdíly vyráběny také jinými programy, jako je Subversion , CVS , RCS , Mercurial a Git .

Opravy byly klíčovou součástí mnoha systémů řízení zdrojů, včetně CVS .

Pokročilé rozdíly

Pokud se používají pokročilejší rozdíly, lze opravy použít i na soubory, které byly mezitím změněny, pokud tyto úpravy nebudou překážet opravě. Toho je dosaženo použitím „ kontextových rozdílů “ a „ sjednocených rozdílů “ (také známých jako „unidiffs“), které obklopují každou změnu kontextem , což je text bezprostředně před a po změněné části. Oprava pak může použít tento kontext k vyhledání oblasti, která má být opravena, i když byla posunuta změnami dříve v souboru, přičemž jako výchozí bod použije čísla řádků v rozdílech. Kvůli této vlastnosti jsou kontext a sjednocené rozdíly upřednostňovanou formou oprav pro odeslání do mnoha softwarových projektů.

Výše uvedené funkce dělají diff a patch obzvláště populární pro výměnu úprav open-source softwaru . Outsiders si mohou stáhnout nejnovější veřejně dostupný zdrojový kód, provádět jeho úpravy a posílat je v různé podobě vývojovému týmu. Pomocí rozdílů má vývojový tým schopnost efektivně zkontrolovat opravy před jejich použitím a může je použít na novější kódovou základnu, než ke které měl přístup externí vývojář.

Příklady použití

Chcete-li vytvořit opravu, můžete v shellu spustit následující příkaz:

$ diff -u oldFile newFile > mods.diff  # -u tells diff to output unified diff format

Chcete-li použít opravu, můžete spustit následující příkaz v prostředí:

$ patch < mods.diff

Toto říká, že oprava má použít změny na určené soubory popsané v mods.diff. Opravy souborů v podadresářích vyžadují další možnost, kde číslo je 1, pokud je základní adresář zdrojového stromu zahrnut v rozdílu, a 0 jinak. -pnumber

Opravy lze vrátit zpět nebo obrátit pomocí možnosti ' -R':

$ patch -R < mods.diff

V některých případech, kdy soubor není totožný s verzí, pro kterou byl rozdíl vygenerován, nebude možné opravu použít čistě. Pokud jsou například řádky textu vloženy na začátek, budou čísla řádků uvedená v záplatě nesprávná. Patch je schopen se z toho zotavit tím, že se podívá na blízké řádky a přemístí text, který má být opraven. Obnoví se také při změně řádků kontextu (pro kontext a sjednocené rozdíly); toto je popisováno jako fuzz .

Porty opravy

Původně napsaný pro Unix a unixové systémy, patch byl také přenesen na Windows a mnoho dalších platforem. Porty Windows pro opravu poskytují GnuWin32 a UnxUtils .

patchPříkaz je také součástí ASCII ‚s MSX-DOS2 Nástroje pro MSX-DOS verze 2.

Viz také

Reference

externí odkazy