On Mon, 28 Apr 2008 12:21:17 -0700 (PDT) Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > > On Mon, 28 Apr 2008, Andrew Morton wrote: > > > > hm, weirdness. > > > > y:/usr/src/git26> git-diff origin...git-ia64 > > y:/usr/src/git26> git-log origin...git-ia64 | wc -l > > 15574 > > > > I'd have expected git-log to operate on the same patches as git-diff. > > No, not at all. > > - "git log" shows each commit in a range. > > - "git diff" shows just the difference between two states. > > The two have nothing in common. One operates on lots of individual commits > (git log) individually, while the other one fundamentally operates on just > two end-points (git diff). > > And "a..b" and "a...b" means two totally different things for the two > totally different operations. > > When doing "a..b" and looking at individual commits, it means "show all > commits that are in b but *not* in a". And when doing "a..b" when asking > for a "diff", it means "show the difference from 'a' to 'b'". > > They are *very* different operations indeed. The log can be empty, even if > the diff is not empty (example: b is _before_ a, so there is nothing in > 'b' that isn't in 'a', but that doesn't mean that 'b' is *equal* to 'a', > so there is still a diff!). And the log can be non-empty, even if the diff > is empty (example: 'b' and 'a' have the same actual tree, but two > different ways of gettign there: the diff is empty, but the log of commits > in between them is not). whimper. > So anybody who thinks that 'diff' and 'log' have *anything* to do with > each other is fundamentally confused. hi, everyone. > Not just about git, btw. It's true > in any model - it's fundamental. > > As to 'a...b', it also means somethign different for diff (two endpoints!) > and log (set of commits). For diff, it means "show the difference between > the common commit and 'b'", while for log it means "show all commits that > are in either 'a' or 'b' but *not* in both". > > So you should do > > # generate the diff from the common point > git diff -p --stat a...b > > # show the commits that are in b but not in a > git log a..b That seems to work nicely, thanks. > where the difference between two dots and three dots is important, and > stems directly from the fact that 'diff' and 'log' are two totally > different operations that cannot _possibly_ have semantics that mean the > same thing - because a "set of commits" is fundamentally different from > "difference betwen two endpoints". yup. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html