2010-01-15 12 views
20

Necesito saber si los dos parches son efectivamente iguales.difsing diffs con diff?

Tengo un archivo de parche antiguo y un nuevo archivo de parche creado con el comando unix diff. Simplemente difiriendo los parches informa las diferencias debido a la marca de tiempo cuando se creó el parche.

¿Hay alguna manera (con diferencia?) Que pueda decirme si los dos parches son efectivamente iguales?

+9

ponemos un diff en tu diff para que puedas hacer diff mientras dif –

+3

yo, imma te permite dif, pero beyonce tuvo las mejores diferencias de todos los tiempos. ¡todo el tiempo! – GManNickG

+2

¿Hay alguna insignia para preguntas recursivas? Debería haber. –

Respuesta

28
+0

Gracias ephemient. Este es solo el boleto. – srking

+0

Desafortunadamente, después de entrar en él interdiff me falló. Primero, no hay un código de retorno como diff y en segundo lugar generó toneladas de diferencias incorrectamente entre dos parches grandes pero por lo demás idénticos. – srking

+0

Hmm. El código de retorno es cero en ambos sentidos, pero si las dos diferencias son idénticas, no debería haber ninguna salida. ¿Hay algún nombre de archivo cambiado entre las dos diferencias? Probé 'interdiff' justo ahora en unos pocos archivos de texto de 80kB con aproximadamente 20kB de cambios, y funcionó bien al reconocer diferencias diferentes. – ephemient

5

Puede aplicar ambos parches a las copias del mismo archivo fuente y luego usar diff normalmente para verificar las diferencias en los resultados.

Los parches representan cambios en los archivos de entrada, por lo que dos parches son iguales si tienen el mismo efecto en los archivos de entrada. Las diferencias en los parches se reflejan directamente en las diferencias de los resultados de esos parches.

Cualquier diferencia entre dos parches que no den lugar a una diferencia en el resultado de esos parches es irrelevante.

+0

¿Pero cómo "verifica las diferencias en los resultados"? Si tengo dos copias del mismo código fuente (digamos el mismo checkout SVN en dos máquinas diferentes) y aplico un parche en una máquina y el otro parche en la otra máquina, ejecuto 'svn diff' y me queda, de nuevo, con dos dificultades para verificar. Su punto sobre "dos parches son iguales si tienen el mismo efecto en los archivos de entrada" está bien tomado, pero la pregunta es ¿cómo lo determinamos? – dimo414

0

Puede probar Beyond Compare.

Se puede configurar para reemplazar cadenas en uno o ambos archivos con otra cosa, que luego se hace debajo de las cubiertas. Los archivos en la pantalla todavía parecen que existen en el disco, pero las diferencias dependen de los archivos procesados.

Con eso puede configurarlo para cambiar todo el texto que tiene un formato como una marca de tiempo a algo común en ambos archivos, y luego solo comparará todo lo demás.

En el cliente de Windows, para cambiar estas configuraciones, en la barra de herramientas hay un botón con un pequeño símbolo que se parece a un hombre, torso y cabeza, y en el diálogo que se abre, hay una pestaña para Reemplazos.

+0

Gracias, pero necesito una herramienta de código abierto ya que un número desconocido de usuarios ejecutará la comparación de parches. – srking

+0

Ok, pero si todo lo que necesitas saber es si son iguales, excepto las marcas de tiempo, tal vez deberías hacer un AWK o SED o similar en el archivo para transformarlo, para que las marcas de tiempo sean iguales, y luego puede ejecutar cualquier tipo de diff que desee en los archivos. –

+0

¿O el proceso de parche es más parecido al "archivo original, remójelo con uno de los archivos, luego aplique el mismo archivo original con el otro archivo y luego compare los resultados de las dos operaciones de parche" para que los parches reales puedan contener datos diferentes, pero terminan con el mismo resultado? –

Cuestiones relacionadas