… ou une occasion d’apprendre

Créer un patch avec diff

Posté le 3 décembre 2006 à 16:46

J’ai du créer un patch pour faciliter le déploiement de quelques modifications mineurs sur le site web d’un client par leur technicien. J’ai finalement trouvé quelques exemples de l’utilisation de diff et de patch. Je cherche ces informations à chaque fois que j’en ai besoin car je n’utilise pas cette technique très souvent.

Donc pour faire un patch il faut évidement avoir gardé une version du contenu avant les modifications, se contenu étant le répertoire old, le nouveau contenu étant le répertoire new (ces noms ont aucune importance, il faut simplement avoir ces deux répertoires). Donc nous créons le patch à partir de ceux-ci.

diff -urN ./old ./new > file.patch
-u : le format du patch est unified
-r : créer le patch récursivement
-N : Les fichiers absents sont considérés comme des fichiers vides

Nous allons le tester en faisant une copie du répertoire old vers test par exemple et y appliquer le patch de la manière suivante.

patch -p1 -d --dry-run ./test < file.patch
-p1 : afin d'ignorer le nom du premier répertoire (en effet, celui utiliser
      pour créer le patch n'est pas forcément le même que celui où il doit
      être appliqué)
-d : spécifie le répertoire où le patch doit être appliqué
--dry-run : n'applique pas réellement le patch mais retourne tout les messages
           et donc les éventuelles erreurs généré lors de son application

Si il n’y a pas d’erreur, lancer la même commande sans —dry-run puis contrôler que tout s’est bien passé avec la commande diff.

diff -urN ./new ./test

Si elle ne retourne aucune différence s’est que tout va bien.

Lors de l’application final il est conseillé de faire une copie des données pour commencer, de lancer patch d’abord avec —dry-run, et si tout se passe bien de le lancer sans après.

Articles relatifs





Envoyer une réponse

Ce site supporte OpenID, vous pouvez vous authentifier en entrant votre identité dans le champ adéquat mais ceci n'est pas obligatoire.

Si vous ne vous authentifiez pas avec OpenID le nom et l'email sont requis. Si vous vous authentifiez pour la première fois, les renseigner permet de vous assurer des informations qui seront associées à votre profile (si il existe déjà elles seront mises à jour).