Creare patch
Da MDC.
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 -u), 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 >
[modifica] Creare un diff su più file
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.
[modifica] Includere i nuovi file in una patch
Per includere i nuovi file in una patch, si utilizzi l'opzione -N:
$ 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 ([1]), che modifica CVS/Entries per far credere al cvs che il file sia stato aggiunto al repository:
$ cvsdo add NUOVOFILE $ cvs diff -u8pN NEWFILE > FILE_DI_OUTPUT
Si noti che questo trucco non funziona per le nuove directory; per queste, cvs add deve realmente modificare il repository immediatamente, il chè richiede un accesso in scrittura.