2009-08-11 2 views
4

Когда настроен внешний diff, результаты отображаются на каждый файл, то есть для просмотра различий для следующего файла необходимо закрыть текущий запущенный diff viewer.git diff - внешний просмотр - получить все результаты diff

Есть ли способ сделать git порождать все процессы просмотра diff параллельно?

Если я просто запускаю процесс из внешнего скрипта diff, очевидно, git удаляет временные файлы, которые он использует для сравнения.

Так

#!/usr/bin/python 
import subprocess 
import sys 
p = subprocess.Popen(('/usr/bin/meld', sys.argv[2], sys.argv[5])) 
#p.wait() 

не работает, с MELD отображения «Не удалось прочитать '/tmp/.diff_VlLwKF'

Однако, если я раскомментировать

#p.wait() 

все работает отлично , но опять же, это последовательный нереста, а не параллельный.

Благодаря

+0

В каком окружении вы используете? Должна быть возможность писать обертку, чем порождает зрителя в фоновом режиме и использовать это как ваш diffftool. –

+0

См. Вопрос, добавлено еще некоторое количество информации – Art

+0

Я думаю, вы можете настроить git, чтобы не удалять временные файлы, которые он использует для сравнения (см. Git-config/git-diffftool manpage). –

ответ

6

Я задал подобный вопрос на SO, желая открыть файлы различий в закладках в BeyondCompare. Я пришел с этим:

for name in $(git diff --name-only $1); do git difftool $1 $name & done 

Это получает список измененных файлов и вызывает внешнюю утилиту сравнения в фоновом режиме на каждый отдельный файл.

Проверьте details here и как я прост в использовании. Будучи новым Баш Я хотел бы услышать о каких-либо улучшений ...

Edit 1: добавлена ​​опция парам (например, «--staged»)
Edit 2: добавлены мерзавец псевдоним (see link).

+0

Отлично, вот что мне нужно! Благодаря! – Art

0

Вместо вызова difftool для каждого файла, вы можете позволить мерзавец сделать это для вас, начиная с (git 1.7.11, июнь 2012 г.):
Он теперь может Diff каталогов (т.е. отобразить все файлы для сравнения, перед открытием difftool)

См «git difftool to give directory compare?»

Так, может быть, теперь вы можете использовать один вызов, с каталога дифф.