From: Junio C Hamano Date: Tue, 01 Nov 2011 03:49:51 GMT Subject: Re: [PATCH] Display change history as a diff between two dirs Message-ID: <7v39e8o61s.fsf@alter.siamese.dyndns.org> In-Reply-To: <4EAE688C.8010502@gmail.com> Roland Kaufmann writes: >> "git diff" (and possibly even things like "git log -p") populating >> two temporary directories (your old/ and new/) and running a custom >> program specified by GIT_EXTERNAL_TREEDIFF environment variable, >> instead of doing > > Would it be better to have yet another configuration available for > this option instead of reusing the existing infrastructure for `git > difftool`? GIT_EXTERNAL_DIFF is designed to drive tools that can take a single pair of files and compare, so it is entirely possible for people to have such tool that would _not_ grok (as a tool named by the variable does not have to) two directories specified by it. So yes, it is essential that the variable not be reused. It probably is OK for "git diff --dirdiff" to use GIT_EXTERNAL_TREEDIFF if and only if GIT_EXTERNAL_DIFF is not defined, and use GIT_EXTERNAL_DIFF otherwise. People who have GIT_EXTERNAL_DIFF set to a tool capable of handing directory pair can just add "--dirdiff" to the command line, and others can find such a tool and set it to GIT_EXTERNAL_TREEDIFF when they do so. >> It also is not clear what could be used in "$@". Obviously you would >> not want things like "-U20" and "--stat" fed to the first "list of >> paths" phase, but there may be some options you may want to give to >> the inner "external diff" thing. > > Ideally, it should work the same way as `git difftool`. I am not so sure about that; difftool is another way to drive a tool one filepair at a time. You want to drive a tool that takes them as two _sets_ of files, one in each directory.