Création d'un patch

 

Après avoir récupéré le code source, l'avoir modifié, compilé et testé, vous voudrez peut être que vos modifications soient examinées et intégrées. Pour cela, vous devez créer un fichier répertoriant les modifications que vous avez apporté, appelé patch ou fichier diff . Vous pouvez le générer en utilisant la commande cvs diff.

Création d'un diff pour un unique fichier

Afin de créer le diff d'un unique fichier local par rapport à son homologue sur le dépôt cvs, utilisez :

$ cvs diff -u8p NOM_FICHIER

Cette commande crée un diff dans le format dit 'unifié' (<tt>-u</tt>), avec 8 lignes de contexte. Par défaut, le résultat est envoyé vers la sortie standard. Pour le rediriger vers un fichier, utilisez la commande :

$ cvs diff -u8p NOM_FICHIER > FICHIER_RESULTAT

Création d'un diff pour plusieurs fichiers

Si, au lieu d'indiquer un fichier dans NOM_FICHIER, vous indiquez un répertoire, ce répertoire et tous ses sous-répertoires sont examinés récursivement. Par exemple :

$ cvs diff -u8p . > FICHIER_RESULTAT

Cette commande compare tous les fichiers du répertoire courant et de ses sous-répertoires aux versions du dépôt cvs, et écrit les diffs unifiés combinés dans un fichier appelé FICHIER_RESULTAT, en utilisant 8 lignes de contexte.

Le contexte fourni dans le patch devrait être suffisant pour le rendre compréhensible sans avoir à ouvrir le fichier source. La règle de base est d'utiliser 8 lignes de contexte ; si plus de contexte est nécessaire pour rendre le patch compréhensible, remplacez 8 par une valeur plus élevée. Notez que plus vous insérez de contexte, plus vous aurez de chance que votre patch puisse être appliqué à un fichier qui diffère nettement du fichier original sur le dépôt qui a servi à créer le diff.

Inclusion de nouveaux fichiers dans un patch

Pour inclure un nouveau fichier dans votre patch, utilisez l'option <tt>-N</tt> :

$ cvs diff -u8pN . > FICHIER_RESULTAT

Un problème courant ici est que cvs diff n'inclura pas les nouveaux fichiers qui n'ont pas été préalablement ajoutés sur le dépot par un cvs add, et cette dernière commande nécessite des droits d'écriture sur le dépôt cvs.

La solution est d'utiliser l'utilitaire cvsdo qui permet d'édition de <tt>CVS/Entries</tt> pour faire croire à cvs que le fichier a été ajouté au dépôt.

$ cvsdo add NOUVEAU_FICHIER
$ cvs diff -u8pN NOUVEAU_FICHIER > FICHIER_RESULTAT

Notez que cette astuce ne fonctionne pas pour des nouveaux répertoires ; pour ceux là en fait, cvs add doit pouvoir modifier le dépôt immédiatement, ce qui nécessite des droits d'écriture.

Étiquettes et contributeurs liés au document

Contributeurs ayant participé à cette page : VincentN, tregagnon, Chbok, Mgjbot
Dernière mise à jour par : tregagnon,