WikiPlus

Comparar código fuente como un diff de Git — sin acceso al repositorio

El diff de Git es la herramienta estándar para comparar versiones de código en proyectos con control de versiones. Pero hay situaciones donde no tienes acceso al repositorio o donde necesitas comparar fragmentos de código de fuentes externas: código pegado en un ticket de soporte, una respuesta de Stack Overflow, un ejemplo de documentación o un email con el código de un colega. El Comparador de Texto de WikiPlus usa el mismo algoritmo de Myers que Git para producir un diff con resaltado idéntico al de GitHub o GitLab, directamente en el navegador.

Cuándo usar un comparador online en lugar de git diff

El comparador de texto online complementa a Git en varios escenarios. Cuando recibes un parche de código en un email o un mensaje y quieres ver exactamente qué cambia respecto a tu versión local sin aplicarlo primero, pegar ambos aquí es el camino más rápido. Cuando comparas el código de una documentación externa con tu implementación para identificar diferencias. Cuando trabajas en sistemas de ficheros efímeros como instancias de cloud sin persistencia y no puedes hacer git stash. Cuando necesitas comparar código de distintas ramas sin hacer checkout. Cuando quieres generar un diff formateado para incluir en un documento o una presentación técnica.

Interpretar el formato de diff unificado

El formato de diff unificado es el estándar que usa Git y que muestra GitHub en las pull requests. Las líneas que empiezan con '+' son adiciones (en verde en la interfaz visual). Las líneas que empiezan con '-' son eliminaciones (en rojo). Las líneas sin prefijo son contexto sin cambios que aparecen para ayudar a localizar el cambio en el archivo. Los marcadores '@@ -a,b +c,d @@' indican el número de línea y la cantidad de líneas afectadas en el archivo original (a, b) y en el modificado (c, d). Este formato es el input que el comando 'patch' de Unix y la opción '--apply' de git esperan para aplicar cambios programáticamente.

Comparar versiones de queries SQL o procedimientos almacenados

Las queries SQL y los procedimientos almacenados son otro caso de uso habitual para los comparadores de código. Cuando un DBA o un analista necesita comparar dos versiones de una query compleja para verificar que una optimización no cambia la lógica, pegar ambas versiones en el comparador produce inmediatamente un diff que muestra las diferencias con precisión. Para queries muy largas con subconsultas anidadas, el diff a nivel de línea puede ser suficiente; para cambios pequeños en una condición WHERE o en los campos del SELECT, el nivel de carácter muestra el cambio exacto sin tener que leer la línea completa.

Exportar el diff para revisión de código asíncrona

En equipos distribuidos, la revisión de código a veces necesita ocurrir de forma asíncrona sin que todos los revisores tengan acceso al repositorio. Exportar el diff como HTML auto-contenido permite compartirlo por email o añadirlo a un ticket sin necesidad de acceso a GitHub o Bitbucket. El HTML exportado preserva todos los colores de resaltado y la estructura de vista lado a lado, lo que facilita la revisión incluso para personas que no tienen familiaridad con el formato de diff unificado en texto plano.

Preguntas frecuentes

¿El comparador reconoce el lenguaje de programación automáticamente?
No. El comparador trata el texto de entrada como texto plano sin análisis de sintaxis específica de lenguaje. El resaltado de colores es solo para adiciones y eliminaciones, no para palabras clave del lenguaje. Para diff con resaltado de sintaxis por lenguaje, herramientas como Meld, Beyond Compare o el visor de diff integrado en VS Code son más adecuadas.
¿Puedo comparar código minificado con código formateado?
Técnicamente sí, pero el resultado mostrará prácticamente todo como diferente porque la minificación elimina todos los saltos de línea y espacios. El resultado útil solo se obtiene si ambas versiones tienen el mismo nivel de formato. Para comparar código minificado con su versión formateada, primero formatea el minificado con una herramienta de prettifier y luego compara las dos versiones formateadas.
¿Existe un límite de tamaño para el código que puedo comparar?
El límite práctico está determinado por la memoria disponible del navegador. Archivos de código de hasta varios cientos de kilobytes se comparan sin problemas en hardware moderno. Para archivos muy grandes de miles de líneas, el algoritmo de Myers puede tardar varios segundos. Si el diff tarda más de tres segundos, divide el archivo en fragmentos más pequeños y compáralos por separado.