Re: [PATCH] Pickaxe fixes.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:41:58
quoted
quoted
quoted
quoted
"TG" == Thomas Glanzmann [off-list ref] writes:
TG> Btw. When doing the. 'git-whatchanged drivers/ide' thing TG> ... does that show only deltas which happened actually in TG> this tree or if a changeset contains deltas inside and TG> outside? That's up to Linus right now. The behaviour is different before and after the 12-part patch I sent out yesterday [*1*]. My earlier thinking was to use the pathspec (e.g. drivers/ide) as the output filter, but Linus corrected me yesterday morning that he wants the pathspec as the input filter. What this means to your question is: - Under my earlier thinking, if drivers/ide/foo is a rename from drivers/usb/bar, diffcore gets both creation of foo and deletion of bar, diffcore-rename matches them up, and diffcore-pathspec filters the output to drivers/ide tree. Earlier pathspec picked up filepair that had the specified path on either src or dst side, so this would have been shown as a rename from usb/bar to ide/foo. - After the 12-part patch, the pathspec comes first and establishes a narrowed down world we operate in. So in the same situation, diffcore is fed only creation of foo but does not see deletion of bar (which happened in drivers/usb, which is outside our world). Hence diffcore-rename does not have anything to match up and this would be shown as a creation of ide/foo. I agree with Linus that the latter is the semantics we usually want. If we make diffcore filters stackable (I mean, the order of applications controllable by the program and the user), we could also have the older semantics when the user wants it, but I would do that after this series stabilizes. [Footnote] *1* When I talk about time of the day, it is in US Pacific timezone.