2009-08-07 15 views
7

He estado realizando cambios que implican mover métodos, extraer nuevos métodos y cambiar la funcionalidad una pequeña cantidad (no todos al mismo tiempo, pero dentro de la misma revisión, tal vez fue una decisión incorrecta).¿Es posible hacer una diferencia inteligente entre archivos?

Difusión convencional parece generar diferencias que informan que el método doFoo fue eliminado en la línea 42, y que un método casi idéntico que también se llama doFoo fue creado en la línea 2012. Es fácil pedirle a un programa diferente que compare el doFoo borrado en la línea 42 con el doFoo creado en 2012? (Preferiblemente un programa diff que es gratuito y está disponible en Ubuntu)

Respuesta

1

Ediff, la herramienta diff incluida con emacs, le ayudará a examinar estas regiones.

Puede ejecutar en situaciones en las que una gran parte de texto en un archivo ha sido editado y luego se trasladó a un lugar diferente en otro archivo. En tal caso, estos dos trozos de texto es poco probable que pertenecen a la misma región de diferencias , por lo que la función de refinamiento de Ediff no podrán le dirá lo que se diferencia exactamente dentro estos trozos. Dado que observar grandes piezas de texto es contrario a la naturaleza humana, Ediff tiene un comando especial para ayudar a reducir el riesgo de desarrollar una catarata .

1

Ver SmartDifferencer para una herramienta que entienda la sintaxis del lenguaje y los comandos de edición abstractos como "mover este bloque de código de la línea A a la línea B", "cambiar el nombre de esta variable en todas partes en su alcance". Actualmente disponible para Java y COBOL, otros idiomas siguiendo Real Soon.

EDITAR 9/4/2009: C# añadió ...

EDITAR 5/2011: Muchos lenguajes añaden: C++, JavaScript, más ... Consulte el sitio.

Cuestiones relacionadas