Jak vytvořit patch

 

Poté, co jste získali zdrojový kód, provedli v něm úpravy, zkompilovali jej a otestovali, nejspíše chcete vaše změny nechat prověřit a zařadit. Abyste toho dosáhli, je nutné vytvořit soubor, obsahující změny, které jste provedli - takovému souboru se říká záplata (angl. patch) nebo také diff soubor, který vytvoříte pomocí příkazu cvs diff.

Diff jediného souboru

Pro porovnání jediného místního souboru s daným souborem v repozitáři, použijte příkaz:

$ cvs diff -u8p JMÉNO_SOUBORU

Výsledný diff je v tzv. 'unifikovaném' formátu (-u) s 8 řádky kontextu a vypíše se na standardní výstup. Přejete-li si místo toho diff uložit do nějakého souboru, použijte příkaz:

$ cvs diff -u8p JMÉNO_SOUBORU > VÝSTUPNÍ_SOUBOR

Diff více souborů

Pokud jako JMÉNO_SOUBORU určíte namísto běžného souboru adresář, bude tento rekurzivně prohledán. Například

$ cvs diff -u8p . > VÝSTUPNÍ_SOUBOR

porovná všechny soubory v aktuálním adresáři a všech jeho podadresářích s jejich ekvivalenty v repozitáři a za použití 8 řádek kontextu zapíše souhrnný unifikovaný diff do výstupního souboru jménem VÝSTUPNÍ_SOUBOR.

Takový soubor by měl obsahovat dostatek kontextu, aby mu bylo možné porozumět, aniž by bylo nutné otevírat samotné zdrojové soubory. Doporučovaný kontext je 8 řádků, ale není vyloučeno, že v některých případech je pro pochopení zapotřebí více kontextu. Mějte také na paměti, že čím více řádků kontextu dodáte, tím větší je šance, že vaše záplata půjde aplikovat také na soubory, které se od těch, proti kterým jste ji tvořili, významně liší.

Zařazení nových souborů do diffu

Potřebujete-li do své záplaty zařadit některé nové soubory, použijte parametr -N:

$ cvs diff -u8pN . > VÝSTUPNÍ_SOUBOR

Problém spočívá v tom, že cvs diff zařadí pouze ty nové soubory, které byly do repozitáře přidány za pomoci příkazu cvs add, a to vyžaduje práva pro zápis do repozitáře.

Řešením je nástroj cvsdo, který upraví CVS/Entries tak, že cvs chápe nové soubory jako již přidané:

$ cvsdo add NOVÝ_SOUBOR
$ cvs diff -u8pN NOVÝ_SOUBOR > VÝSTUPNÍ_SOUBOR

Mějte na paměti, že tento trik nefunguje v případě nových adresářů; pro ty musí cvs add upravit repozitář okamžitě a k tomu jsou zapotřebí práva pro zápis.

Štítky a přispěvatelé do dokumentace

Štítky: 
 Přispěvatelé této stránky: fscholz, JasnaPaka, Triceo, Pawell
 Poslední aktualizace od: fscholz,