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
Imagen del código en Vim
Listo, aquí se muestra el script en ejecución:
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 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
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
$ diff -u original.sh nuevo.sh > parche.patch
Y ahora tenemos nuestro parche. Acá una vista en Vim:
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 del amigo
$ patch originalAmigo.sh < parche.patch
Y esto nos deja nuestro archivo originalAmigo.sh así:
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.

Continúar leyendo...

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

Imagen del código en Vim
Listo, aquí se muestra el script en ejecución:

Parece que todo funciona bien
Entonces, como buenos usuarios que somos, compartimos nuestro script a un amigo


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

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

$ diff -u original.sh nuevo.sh > parche.patch
Y ahora tenemos nuestro parche. Acá una vista en Vim:

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 del amigo
$ patch originalAmigo.sh < parche.patch
Y esto nos deja nuestro archivo originalAmigo.sh así:

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.
Continúar leyendo...