Technické
Netechnické
- Jídlo a pití
diff -uN stary.c novy.c > muj.patch
mv src oldsrc #oznacime si puvodni zdrojaky jako stare cp -r oldsrc newsrc #zkopirujeme si puvodni zdrojaky jako novy strom cd newsrc # tady programujeme jako silenci cd .. #skoncili jsme s nasi upravou, mame newsrc/ a oldsrc/ diff -rupN oldsrc/ newsrc/ > complete.patch
Kde '-r' znamená rekurzivně (projde celý strom), '-u' je unified diff, '-N' je zacházení neexistujícími soubory, '-p' zvyšuje přehlednost při čtení patche člověkem.
Pro změnu jednoho souboru pomocí patche, lze použít:
patch < newmainc.patch
To změní soubor uvedený uvnitř patche. Očekává se unifikovaný patch (diff). Pokud není unifikovaný, je potřeba specifikovat soubor, který se má měnit
patch main.c < newmainc.patch
$ basename $PWD src $ cat main.c int main(int argc, char *argv[]) { return (0); } $ cd ../ $ ls newsrc/ src/ $ diff -uN src/main.c newsrc/main.c --- src/main.c 2008-12-25 16:20:52.000000000 +0100 +++ newsrc/main.c 2008-12-25 16:18:13.000000000 +0100 @@ -1,5 +1,6 @@ int main(int argc, char *argv[]) { - return (0); + int i = (int) sizeof(void *); + return (i*8); } $ diff -uN src/main.c newsrc/main.c > newmainc.patch $ cd src/ $ patch < ../newmainc.patch patching file main.c $ ls main.c $ cat main.c int main(int argc, char *argv[]) { int i = (int) sizeof(void *); return (i*8); } $
$ cd hudba $ ls Beatles/ Beatles2/ $ ls Beatles | wc -l; ls Beatles2 | wc -l 8923 8923 $ # pocet polozek v adresarich je stejny $ ls Beatles > /tmp/1; ls Beatles2 > /tmp/2; diff /tmp/1 /tmp/2 $ # vsechny polozky jsou v obou adresarich $ du -sh Beatles Beatles2 892T Beatles/ 39E Beatles2/ $ # tady je uz konecne nejaky rozdil
Nehodí se pro použití s programem patch, ale má hezký barevný výstup.
colordiff old new
Hodí se pro diffování binárních souborů (například binárek programů, knihoven…)
Příklad: Vytvoření binárního patche otagované hudby
bspatch neotagovane.mp3 otagovane.mp3 patch.bsdiff bspatch neotagovane.mp3 nove_otagovane.mp3 patch.bsdiff