potential improvement to 'git log' with a range

Jakub Narebski jnareb at gmail.com
Wed Jun 23 13:02:17 CDT 2010

On Wed, 23 Jun 2010, Martin Geisler wrote:
> Jakub Narebski <jnareb at gmail.com> writes:
>> Linus Torvalds <torvalds at linux-foundation.org> 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

More information about the Mercurial-devel mailing list