From: Nguyen Thai Ngoc Duy Date: Sat, 05 Nov 2011 03:25:42 GMT Subject: Re: [PATCH] log: allow to specify diff pathspec in addition to prune pathspec Message-ID: In-Reply-To: <7vwrbfa6j6.fsf@alter.siamese.dyndns.org> 2011/11/5 Junio C Hamano : > Nguyễn Thái Ngọc Duy   writes: > >> Pathspec in "git log -p " is used for both commit pruning >> and diff generation. If --full-diff is given, then diff pathspec is >> reset to generate complete diff. >> >> This patch gives more control to diff generation.  The first pathspec in >> "git log -p -- -- " is used as commit pruning >> as usual. The second one is used for diff generation. So --full-diff >> now is essentially "git log -p -- --". > > I agree that giving more control to diff generation is a good idea, and > this certainly is better than the previous round that nobody reviewed > before you rerolled this round. > > But I have doubts about declaring "--full-diff is equivalent to giving the > 'output' pathspec that is empty". The equivalent command should be "git log -p -- -- :/" (in case you're in subdir). What doubts specifically? > Have you thought about the interaction between this and -M/-C options? No, yes I may have problems there. > This is not a new "problem" (and it is probably not a problem to begin > with). If you had "--" in the working tree and you wanted to treat it as > a path, you said either one of these: > > $ git log HEAD ./-- > $ git log HEAD -- -- > > The latter is what your patch breaks, I suspect. > > Also it forces existing scripts and programs that knew "everything in this > array is a pathspec" and added "--" before adding the contents of the > array to form a command line to drive "git log" family of commands to be > updated. We could only recognize the second "--" when a new argument is given so it won't break existing use. But I'll need to look at -C/-M first. Smells like --follow problem. -- Duy