- Published on
- April 30, 2020
Antes del control de versiones
- Authors
- Name
- Tania Zúñiga
- tanx
- @tanx
Seguramente alguna vez has tenido dos archivos: uno contiene tu código “original” y otro código “con cambios”, seguramente también te gustaría ver las diferencias entre ambos y la forma más común de hacerlo sería abriendo los dos archivos al mismo tiempo y compararlos, sin embargo, si es muy largo puede que sea una tarea más difícil de lo esperado. Con el comando:
diff archivo_old archivo_new
Imagina que tienes los siguientes archivos:
# archivo_original.py
fruits = ["apple", "orange", "blueberry"]
for fruit in fruits:
print (fruits)
# archivo_correccion.py
fruits = ["apple", "orange", "blueberry"]
for fruit in fruits:
print(fruit)
Usaremos el comando diff archivo_original.py archivo_correcciones.py
y la consola nos mostrar lo siguiente:
3c3
< print (fruits)
\ No newline at end of file
---
> print(fruit)
\ No newline at end of file
Podemos ver que la linea 3 de ambos archivos es diferente y diff nos lo denota.
<
la linea fue eliminada en el primero archivo.
>
la linea fue agregada en el segundo archivo.
a
Add the lines.
c
Change the lines.
d
Delete the lines.
Los números representan el cambio en cierta línea, en nuestro ejemplo el cambio estaba en la linea 3 de ambos archivos por eso aparece 3c3.
Si aun no es tan claro donde está el cambio podemos usar:
diff -u archivo_old archivo_new
-u
significa unified format
Para nuestro ejemplo usamos diff -u archivo_original.py archivo_correcciones.py
y obtenemos:
--- archivo_original.py 2020-04-30 22:46:39.000000000 -0500
+++ archivo_correcciones.py 2020-04-30 22:46:49.000000000 -0500
@@ -1,3 +1,3 @@
fruits = ["apple", "orange", "blueberry"]
for fruit in fruits:
- print (fruits)
\ No newline at end of file
+ print(fruit)
\ No newline at end of file
Sin embargo hay muchas otras herramientas a parte de diff como por ejemplo wdiff que resalta las palabras que han cambiado en un archivo en lugar de trabajar línea por línea como lo hace diff.
También hay herramientas gráficas que muestran archivos uno al lado del otro y resaltan las diferencias mediante el uso del color. Algunos ejemplos de esto incluyen: meld, KDiff3, o vimdiff.
Puedes guardar las diferencias que obtienes de usar el comando diff
en un archivo .diff
diff -u archivo_old archivo_new > cambios_dif
¿Y para qué sirve un archivo.diff?**
Para “parchar”, sí, puedes usar el archivo .diff para parchar un código con las diferencias usando el comando patch
.
patch archivo_a_parchar < archivo_diff
¡Así logras ver cambios y hacer cambios desde tu
terminal usando solo dos simples comandos diff
y patch
!
Genial, ¿no?