Jakub Narebski <jnareb@xxxxxxxxx> writes: > Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes: > >> On Fri, 9 Apr 2010, Aghiles wrote: >> > >> > Oh, I should have read the documentation. I was certain that ".." >> > stands for a range but it is a ... complement. >> >> Well, technically ".." means two different things >> >> - for "set operations" (ie "git log" and friends) it's the "relative >> complement" of two sets (or "'reachable from A' \ 'reachable from B'"). >> >> - for "edge operations" (ie "git diff" and friends) it's just two >> end-points (aka "range"). A diff doesn't work on sets, it only >> works on the two endpoints. > > [...] >> Most SCM's really talk about "ranges". Once you think in those terms, >> complex history doesn't work. Git very fundamentally is much about >> set theory, and "ranges" is a bad word to use. > > For example from I have got from asking on #mercurial IRC channel on > FreeNode (a bit of self promotion: I have done this research to write > an answer to "Git and Mercurial - Compare and Contrast" question on > StackOverflow[1]), Mercurial implements its ".." equivalent in the > term of _numeric range_, even for "hg log" (sic!). This is fixed with Mercurial 1.6: we now have a query language where 'X..Y' (or 'X::Y') is understood as the set of changesets that are both descendents of X and ancestors of Y. > [1] > http://stackoverflow.com/questions/1598759/git-and-mercurial-compare-and-contrast/1599930#1599930 -- Martin Geisler Mercurial links: http://mercurial.ch/
Attachment:
pgpOnlTDeD3DI.pgp
Description: PGP signature