On Thu, Feb 04, 2021 at 04:56:16PM -0800, Junio C Hamano wrote: > > As an aside: I am curious if I'm missing something when you say the > > "only way" is to ask for a 'git range-diff ...@{u}'. IIUC what you're > > describing, I often resort to using 'git cherry' for that exact thing. > > But, I may not be quite understanding your use-case (and why git-cherry > > doesn't do what you want already). > > > > My latter question is purely for satisfying my own curiosity; I don't > > have any problem with a '--{left,right}-only' option in range-diff. From > > my quick read of the patches, it all looks pretty sane to me. > > The question is addressed to Dscho, and I am also somewhat curious. > Perhaps the reason would be that the output from cherry is not as > easy to read as range-diff, without any post-processing. I had the same curiosity; I'd use git-cherry (or rev-list --cherry) for this. I suspect the big difference is the quality of the matching. git-cherry is purely looking at patch-ids. So it is quite likely to say "this was not applied upstream" when what got applied differed slightly (e.g., fixups upstream, applied to a different base, etc). Whereas range-diff has some cost heuristics for deciding that two patches are basically the same thing. So it would find more cases (and as a bonus, give you the diff to see what tweaks were made upstream). It does make me wonder if it would be useful for rev-list, etc to have an option to make "--cherry" use the more clever heuristics instead of just a patch-id. It would never show the same diff output as range-diff, but maybe more scripts would find the advanced heuristic useful. I know it would probably make rebase's "ignore if in upstream" feature less clunky when I rebase topics. But it would also make it more dangerous! E.g., right now I see any upstream tweaks as potential conflicts when I rebase, and I manually review them for sanity. -Peff