Git diffftool для сравнения каталогов?

Возможно ли получить команду git difftool, чтобы открыть сравнение каталогов между измененными файлами и файлами промежуточного/проверочного файла?

В идеале, если 2 файла изменились, они будут отображаться только 2, но в пределах сравнения каталогов.

Я читал сообщения о том, чтобы получить git, чтобы дать все различия между файлами параллельно, поэтому такие инструменты, как BeyondCompare, имеют все различия в вкладках, но им не нравится с этим!

Можно было вытащить копию измененных файлов из промежуточных/проверенных файлов в временную папку, а затем открыть ее. Это единственный вариант?

Ответ 1

Обновление в июне 2012 года (2 с половиной года спустя):

Это (сравнение каталогов вместо файла за файлом), как представляется, скоро будет доступно:
См. [ANNOUNCE] Git 1.7.11.rc1:

"git difftool" выучил параметр --dir-diff для создания внешних средств сравнения, которые могут сравнивать две иерархии каталогов одновременно после заполнения двух временных каталогов вместо запуска экземпляр внешнего инструмента один раз на пару файлов.

См. " Патч difftool: научить difftool обрабатывать различия в каталогах"


Оригинальный ответ (январь 2010)

Можно было вытащить копию измененных файлов из промежуточных/проверенных файлов в временную папку, а затем открыть ее. Это единственный вариант?

В принципе да:

У вас diffftool script будет:

  • создать 2 временных каталога
  • определяет себя как инструмент diff
  • вызов Git diff
    • который затем вызывает себя для файла для diff
    • в этом режиме, тот же script, для каждого файла, только скопируйте две версии в diff в двух каталогах темпа
  • тогда продолжайте и вызовите инструменты diff (например, overCompare или WinMerge) в двух временных каталогах

У вас есть один первый пример в этом вопросе.

Ответ 2

Я всегда использую --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/

что означает, что я удалил dirs virenze_conversations и virenze_crs в custom. (Я не знаю, что означают проценты...)

Возможно, вы можете использовать все обычные параметры diff: --cached, имя ветки и т.д.