On Wed, 23 Jun 2010, Martin Geisler wrote: > Jakub Narebski <jnareb@xxxxxxxxx> writes: >> Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes: >>> >>> 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. Thanks. It looks like Mercurial's 'X::Y' is equivalent to Git's '--ancestry-path X..Y' (the --ancestry-path option is a new feature). >> [1] >> http://stackoverflow.com/questions/1598759/git-and-mercurial-compare-and-contrast/1599930#1599930 Fixed. Could you please take a look if it is correct, and if there are errors, either correct it yourself, or ask me to do it (either via comments for this question, or via email)? Thanks in advance. P.S. Isn't mercurial-devel subscribe only? -- Jakub Narebski Poland -- 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