Herramientas de desarrollo · Comparación de texto
Cómo leer una diferencia unificada: encabezados de trozos, líneas de contexto y marcadores +/-
· Antecedentes
diferencia de texto parches flujo de trabajo del desarrollador
Decodifica el formato de diferenciación unificado línea por línea, desde encabezados de archivos y rangos de trozos @@ hasta líneas de contexto y marcadores de cambio, por lo que los parches de cualquier herramienta tienen sentido.
Un muro de ventajas, desventajas y símbolos @@: se abre con el primer encuentro con un parche en un correo electrónico o solicitud de extracción
Un `changes.patch` descargado comienza con una puntuación que se asemeja a una salida de diferenciación familiar, pero su estructura exacta es importante. ToolAcre escribe dos etiquetas y luego cada fila de comparación con un marcador de un carácter. Leer lo que existe es más seguro que suministrar mentalmente campos de otro formato de parche.
Abra el archivo en un editor de texto sin formato. Las dos primeras líneas identifican las etiquetas izquierda y derecha proporcionadas por la interfaz de usuario como `original` y `changed`. Las líneas siguientes reconstruyen los textos comparados mediante marcadores de contexto, eliminación y adición.
Las líneas de encabezado del archivo: explica las líneas --- y +++, las rutas y las herramientas de prefijos a/ y b/ que agregan
El encabezado es `--- original` seguido de `+++ changed`. En otras herramientas, esos prefijos pueden estar dentro de una gramática de parche más rica, pero este exportador no agrega marcas de tiempo, rutas ni metadatos. Las etiquetas describen lados, no archivos que se haya demostrado que existen en el disco.
Esa distinción es importante porque Text diff acepta cadenas pegadas en lugar de objetos de archivo. La descarga crea un informe textual local después de la comparación. Tratar las etiquetas como rutas de repositorio o identificadores de revisión atribuiría una procedencia que la interfaz de usuario nunca recopiló.
Explicación de los encabezados de trozos: decodifica @@ -12,7 +12,8 @@ como línea de inicio y recuento de líneas para cada lado
No hay líneas que comiencen con `@@` en `toUnifiedText`. La función se asigna directamente a todas las filas después de las dos etiquetas. En consecuencia, esta salida no tiene rangos de trozos para decodificar ni pares de línea de inicio/count incrustados en el texto descargado.
Los números de línea permanecen disponibles en la vista renderizada del navegador, donde las filas llevan posiciones izquierda y derecha. La exportación elige una representación más simple. Si un programa posterior requiere bloques unificados que cumplan con los estándares, verifique la compatibilidad en lugar de asumir que la extensión `.patch` proporciona la sintaxis faltante.
ToolAcre no emite encabezados @@, por lo que no hay ninguno para decodificar
Un espacio inicial marca una fila sin cambios, menos marca una eliminación por la izquierda y más marca una adición por la derecha. La interfaz de usuario puede contraer visualmente ejecuciones iguales largas, pero `lastDiff` conserva el resultado completo y la descarga serializa todas las filas. Ningún marcador de salto ingresa a la cadena de parche.
El esquema menciona tres líneas de contexto como valor predeterminado. Three es utilizado por la llamada de colapso visual, no por la exportación. Combinar esas rutas subestimaría el contenido descargado. La presentación y la serialización comparten filas pero aplican transformaciones diferentes.
La descarga marca cada fila y no utiliza un contexto predeterminado de tres líneas.
Compare el `a b` izquierdo con el `a c` derecho. Las líneas exportadas son las dos etiquetas, luego espacio-a, menos-b y más-c. Leer de arriba a abajo dice que `a` sobrevive, `b` deja el original y `c` ingresa al lado cambiado.
Por lo tanto, una modificación se representa como una eliminación y una adición adyacentes cuando la alineación las coloca juntas. El formato no lo denomina "modificado". Si las líneas repetidas permiten otra alineación, la secuencia puede verse diferente sin dejar de tener en cuenta cada fila de entrada.
Ejemplo resuelto: leer el flujo completo en forma de parche que ToolAcre realmente exporta
Los formatos normal, de contexto y de diferencias unificadas completas tienen sus propias especificaciones e historiales, pero no están implementados ni documentados por el conjunto de fuentes utilizado aquí. Este artículo no explica por qué un formato se volvió popular ni enumera los campos que ToolAcre no emite.
Utilice un comando de control de versiones cuando otra herramienta deba aplicar el parche. La descarga de ToolAcre es útil como artefacto de revisión portátil, pero el repositorio no contiene ningún analizador de parches ni función de aplicación que demuestre que puede recorrer consumidores de parches arbitrarios.
Las comparaciones completas unificadas, de contexto y de formato normal requieren fuentes externas
Los parches binarios, el cambio de nombre de encabezados, los cambios de modo y la aplicación están fuera de esta ruta. El texto no contiene identificadores de objeto ni ancestro común. No puede representar una operación de repositorio simplemente porque sus marcadores parecen familiares.
El exportador también refleja las opciones de comparación activas. Una fila considerada igual después de la normalización de mayúsculas y minúsculas o espacios en blanco contiene únicamente el texto izquierdo original, por lo que el documento en forma de parche no es una reconstrucción byte por byte de ambas entradas con una coincidencia flexible.
Conclusión: una diferencia es una historia comprimida: resume el orden de lectura y observa cómo la comparación de texto de ToolAcre muestra los mismos tipos de cambios que las líneas resaltadas para una revisión rápida
Lea primero las dos etiquetas y luego interprete cada fila con prefijo en orden. Si necesita números de línea renderizados, regrese a la vista del navegador. Si necesita piezas que cumplan con los estándares, generelas con una herramienta que documente ese contrato.
ToolAcre proporciona una forma compacta de realizar la comparación fuera de la página sin pretender implementar todas las funciones del parche. Ese nombre más limitado (salida en forma de parche) mantiene las expectativas alineadas con la función exacta y evita una falsa promesa de compatibilidad de aplicaciones.