Tutte le volte che devo creare una patch non mi ricordo mai la sintassi, un appunto sul sito è proprio quello che mi serve. Inizio con le basi, poi magari aggiungerò qualcosa più avanti.
Supponiamo di avere la directory originale Dir1 e la directory contenente le modifiche Dir2, entrambe con relative sottodirectory. La patch si crea molto semplicemente con il comando:
diff -crB Dir1 Dir2 > Dir2.patch
-c (Context) fa l'output di alcune righe attorno alle modifiche di default 3. Molto utile per la leggibilità della patch
-r (Recursive) crea la patch dell'intero albero di directory
-B (ignore Blank) ignora le linee bianche, molto utile anch'essa per la leggibilità
Una volta ottenuta la patch non ci resta che applicarla alla directory interessata, Dir1 nel nostro caso. Prima di tutto ne facciamo una copia di backup, poi procediamo con un dry run, che semplicemente simula l'applicazione della patch senza fare nulla, per evidenziare eventuali errori:
cp Dir1 Dir1.bkp cd Dir1 patch --dry-run -p1 -i ../Dir2.patch
Se tutto va a buon fine avremo un ouput del tipo:
patching file Test1.c patching file Test2.c patching file Test3.c [...]
In caso di errore, invece:
patching file Test1.c patching file Test2.c patching file Test3.c Hunk #2 FAILED at 382. 1 out of 2 hunks FAILED -- saving rejects to file Test3.c.rej [...]
Se il dry run ha dato esito positivo possiamo applicare la patch, aggiornando così il sorgente alla nuova versione:
patch -p1 -i ../Dir2.patch
Per maggiori info RTFM, oppure visionate l'ottimo tutorial di rechosen. Un giro su google, inoltre, restituirà tonnellate di materiale.
© Copyleft 2024 g4b0 (Gabriele Brosulo). All rights reserved
Mappa del sito
Privacy Policy