2010-01-21 11 views
25

¿Es posible obtener el comando git difftool para abrir una comparación de directorio entre los archivos modificados y los archivos de ensayo/verificación?git difftool para comparar el directorio?

Por lo tanto, idealmente, si 2 archivos han cambiado, serían los únicos 2 mostrados, pero dentro de una comparación de directorios.

He leído publicaciones sobre cómo obtener git para dar todas las diferencias de archivos en paralelo, por lo que herramientas como BeyondCompare tienen todas the diffs in tabs, ¡pero no estoy contento con eso!

Se podría extraer una copia de los archivos modificados de archivos de etapas/verificados en una carpeta temporal y luego abrirla. ¿Es esa la única opción?

+0

Las respuestas que obtuve en mi pregunta (similar) podría ayudarle : http://stackoverflow.com/questions/4248830/directory-comparison-of-git-branches –

Respuesta

37

actualización de junio de 2012 (2 años y medio después):

Este (compara directorios en lugar de archivo por archivo) parece ser pronto disponibles:
Ver [ANNOUNCE] Git 1.7.11.rc1:

" git difftool "aprendió la opción" --dir-diff "para engendrar herramientas de diferencias externas que pueden comparar dos jerarquías de directorios a la vez después de llenar dos directorios temporales, en lugar de ejecutar una instancia de la externa herramienta una vez por un par de archivos.

Ver "Patch difftool: teach difftool to handle directory diffs"

respuesta

original (enero de 2010)

Uno podría tirar de una copia de los archivos modificados desde la estadificación/controladas en los archivos en una carpeta temporal , y luego abre eso. ¿Es esa la única opción?

Básicamente sí:

Usted difftool guión sería:

  • crear 2 directorios temporales
  • define a sí misma como una herramienta de diferencias
  • llamada git diff
    • que luego llamar a sí mismo para el archivo a diff
    • en ese modo, el mismo guión, para cada uno de los archivos, sólo se copia la versión de dos a diff en los dos directorios temporales
  • luego ir y llamar a herramientas de diferenciación (como BeyondCompare o WinMerge) en los dos directorios temporales

Tiene un primer ejemplo en this question.

+1

¿Por qué 2 directorios temporales? ¿Es mejor comparar los archivos modificados con el sandbox de git contra la fuente registrada? Por lo tanto, ¿son solo los archivos registrados que han cambiado los que deben copiarse/extraerse en un directorio temporal? Además, esto es lo mejor ya que es posible que desee fusionar los cambios de los archivos registrados en el entorno limitado de trabajo. ¿Alguien tiene alguna intención de hacer este tipo de soporte estándar en git? –

+0

Consulte esta respuesta para obtener más información: http://stackoverflow.com/a/10879804/6309 – VonC

2

siempre uso --dirstat=files:

[email protected]:virenze$ git diff --dirstat=files 
    4.1% modules/custom/virenze_conversations/ 
    7.0% modules/custom/virenze_crs/ 
    8.3% modules/custom/ 

lo que significa que he quitado directorios virenze_conversations y virenze_crs en custom. (No sé lo que significan los porcentajes ...)

es probable que pueda utilizar todas las opciones normales diff: --cached, nombre de la rama etc.

Cuestiones relacionadas