Noticia Viernes de terminal: Patch y Diff

Dos de las herramientas esenciales en el desarrollo de software son Patch y Diff. No es un misterio cómo funcionan, pero pienso que este será un post interesante. :)

Ambas son muy potentes, y esto es solo como tocar la superficie, tienen más utilidades y otras funciones. Básicamente con estas dos herramientas podemos crear control de versiones,

Diff


Nos referimos a comparación, compara un archivo “original” con el “nuevo”, y nos informa de las diferencias que existen entre ellos. Esta herramienta también permite crear archivos .patch que nos sirven para crear parches de nuestros programas.

Patch


Es el comando con el que literalmente “parcheamos” nuestro archivo original, agregando y/o eliminando líneas de acuerdo a las instrucciones contenidas en el archivo .patch

También existe vimdiff, que es una herramienta visual para aplicar los parches sin necesidad de un archivo .patch, ya que compara “original” y “nuevo” y sobre el mismo archivo es posible editar línea por línea o todo el documento. Esto no lo explicaré pero creo que merece una mención.
Ejemplo


Ahora sí lo divertido. ¡Ejemplo!

Este es el caso, tenemos un script genial que pide tu nombre y tu edad, si eres mayor de 18 años te dice que puedes votar, del caso contrario te dice que no puedes votar.

original.sh


#!/bin/bash

echo "Escribe tu nombre: "
read nombre
echo "Escribe tu edad: "
read edad
if [[ 18 -lt $edad ]]
then
echo "Hola $nombre, tienes $edad ¡Y puedes votar!"
else
echo "Hola $nombre, tienes $edad y no puedes votar..."
fi

codigo-script-vim-600x232.png

Imagen del código en Vim


Listo, aquí se muestra el script en ejecución:

script-terminal-600x214.png

Parece que todo funciona bien


Entonces, como buenos usuarios que somos, compartimos nuestro script a un amigo :), pero nos llega un mensaje diciendo que tiene una falla, que cuando tiene 18 dice que no puede votar cuando sí debería.

error-script-600x214.png

Error de lógica :(


Ahora nos ponemos a corregir el pequeño error y a hacer unas cuantas modificaciones…

nuevo.sh


#!/bin/bash

maxEdad=18

echo "Escribe tu nombre: "; read nombre
echo "Escribe tu edad: "; read edad
if [[ $maxEdad -le $edad ]]; then
echo "Hola $nombre, tienes $edad años ¡Y puedes votar!"
else
echo "Hola $nombre, tienes $edad años y no puedes votar..."
fi
exit 0

parche-script-600x214.png

Código nuevo escrito en Vim


Supongamos que el script es muy pesado. Entonces, para no mandar de nuevo todo el script, creamos un .patch :D

$ diff -u original.sh nuevo.sh > parche.patch

Y ahora tenemos nuestro parche. Acá una vista en Vim:

parche-script-2-600x274.png

Así se ven las instrucciones de un .patch. En blanco las líneas que no se modificaron, en azul las eliminadas, en naranja las agregadas.


Y para aplicarlo simplemente usamos el archivo .patch en el script a parchar. Acá se llama originalAmigo.sh, que es una copia exacta del script original.sh

script-amigo-600x274.png

Script del amigo


$ patch originalAmigo.sh < parche.patch

Y esto nos deja nuestro archivo originalAmigo.sh así:

script-amigo-parche-600x232.png

Script del amigo después de aplicar el parche


Como pueden ver es muy fácil obtener los diff y aplicar los patch. De mi parte es todo.

Saludos gente, nos leemos el próximo viernes.

The post Viernes de terminal: Patch y Diff appeared first on Desde Linux.


nE9GVC0tx5o


Continúar leyendo...