Vendredi terminal: Patch et Diff

Deux des outils essentiels du développement logiciel sont Pièce y Diff. Leur fonctionnement n'est pas un mystère, mais je pense que ce sera un article intéressant. 

Les deux sont très puissants, et c'est comme toucher la surface, ils ont plus d'utilitaires et d'autres fonctions. Fondamentalement, avec ces deux outils, nous pouvons créer un contrôle de version,


Diff

Nous parlons de comparaison, il compare un fichier "original" avec le "nouveau", et nous informe des différences qui existent entre eux. Cet outil nous permet également de créer des fichiers .patch que nous utilisons pour créer des correctifs pour nos programmes.


Pièce

C'est la commande avec laquelle nous "patchons" littéralement notre fichier d'origine, en ajoutant et / ou en supprimant des lignes selon les instructions contenues dans le fichier .patch


Il est également vimdiff, qui est un outil visuel pour appliquer des correctifs sans avoir besoin d'un fichier .patch, car il compare "original" et "nouveau" et sur le même fichier, il est possible d'éditer ligne par ligne ou le document entier. Je ne vais pas l'expliquer, mais je pense que cela mérite une mention.


Exemple

Maintenant, le plaisir est. Exemple!

C'est le cas, nous avons un excellent script qui demande votre nom et votre âge, si vous avez plus de 18 ans, il vous dit que vous pouvez voter, sinon il vous dit que vous ne pouvez pas voter.

original.sh

#! / bin / bash echo "Entrez votre nom:" read name echo "Entrez votre âge:" read age if [[18 -lt $ age]] then echo "Bonjour $ name, vous avez $ old et vous pouvez voter! " else echo "Bonjour $ name, tu as $ vieux et tu ne peux pas voter ..." fi
Image du code dans Vim

Image du code dans Vim

Terminé, voici le script en cours:

Tout semble bien fonctionner

Tout semble bien fonctionner

Donc, en tant que bons utilisateurs que nous sommes, nous partageons notre script avec un ami :), mais nous recevons un message disant qu'il a un défaut, que quand il a 18 ans, il dit qu'il ne peut pas voter quand il le devrait.

Erreur logique :(

Erreur logique 

Nous commençons maintenant à corriger la petite erreur et à faire quelques modifications ...

new.sh

#! / bin / bash maxAge = 18 echo "Entrez votre nom:"; read name echo "Écrivez votre âge:"; lire l'âge si [[$ maxAge -le $ age]]; then echo "Bonjour $ name, tu as $ ans et tu peux voter!" else echo "Bonjour $ name, vous avez $ ans et vous ne pouvez pas voter ..." fi exit 0
Nouveau code écrit en Vim

Nouveau code écrit en Vim

Supposons que le script soit très lourd. Donc, pour éviter de renvoyer le script en entier, on crée un .patch 

$ diff -u original.sh nouveau.sh> patch.patch

Et maintenant, nous avons notre patch. Voici une vue de Vim:

Voici à quoi ressemblent les instructions pour un .patch. En blanc les lignes qui n'ont pas été modifiées, en bleu celles supprimées, en orange celles ajoutées.

Voici à quoi ressemblent les instructions pour un .patch. En blanc les lignes qui n'ont pas été modifiées, en bleu celles supprimées, en orange celles ajoutées.

Et pour l'appliquer, nous utilisons simplement le fichier .patch dans le script à patcher. Ici s'appelle originalAmigo.sh, qui est une copie exacte du script original.sh

Script d'ami

Script d'ami

$ patch originalFriend.sh <patch.patch

Et cela nous laisse notre dossier originalAmigo.sh Alors:

Script ami après application du patch

Script ami après application du patch

Comme vous pouvez le voir, il est très facile d'obtenir les différences et d'appliquer les correctifs. Tout vient de moi.

Bonjour les gens, nous lirons vendredi prochain.


Ajouter comme source préférée dans Google