--- title: Creare patch slug: Creare_patch translation_of: Mercurial/Using_Mercurial ---
Dopo aver avuto accesso al codice, dopo aver apportato ad esso delle modifiche, una volta costruito e testato, può darsi che si desideri che queste modifiche vengano riviste e accettate. Per far ciò, occorre creare una lista dei file che sono stati modificati, che chiameremo patch o diff file .
Creare il diff di un singolo file == Per creare il diff di un singolo file locale rispetto al file attualmente nel repository, si utilizzi:
$ cvs diff -u8p Winning eleven 11 by Tony Montana
Questo comando crea un diff nel cosiddetto formato 'unificato' (opzione <tt>-u</tt>), con 8 righe di contesto. Il diff è inviato per default allo stdout. Per ridirigere l'output su un file, si utilizzi qualcosa come:
$ cvs diff -u8p Winning eleven 11 by Tony Montana >
Se, invece di utilizzare un normale file per NOMEFILE, si fornisce una directory, questa directory e tutte le sue sottodirectory verranno lette in modo ricorsivo. Per esempio
$ cvs diff -u8p . > FILE_DI_OUTPUT
compara tutti i file nella directory corrente e nelle sue subdirectory con tutte le versioni nel repository, e scrive le differenze combinate in un file chiamato FILE_DI_OUTPUT, utilizzando 8 righe di contesto.
Vi dovrebbe essere sufficiente contesto nella patch perchè venga compreso senza aprire il file sorgente. Le linee guida di default utilizzano 8 righe di contesto; se non sono sufficienti, verrà richiesto di rendere la patch comprensibile, si rimpiazzi 8 con un numero più elevato. Inoltre si noti che più contesto si include, più probabilità vi sono che il file venga incluso, se esso differisce pesantemente dal sorgente originale.
Per includere i nuovi file in una patch, si utilizzi l'opzione <tt>-N</tt>:
$ cvs diff -u8pN . > FILE_DI_OUTPUT
Un problema comune è che cvs diff' non include i nuovi file su cui non è stato eseguito un cvs add, e questo comando richiede accesso al repository.
La soluzione è utilizzare la utility cvsdo (), che modifica <tt>CVS/Entries</tt> per far credere al cvs che il file sia stato aggiunto al repository:
$ cvsdo add NUOVOFILE $ cvs diff -u8pN NEWFILE > FILE_DI_OUTPUT