potential improvement to 'git log' with a range

Martin Geisler mg at lazybytes.net
Wed Jun 23 12:05:09 CDT 2010


Jakub Narebski <jnareb at gmail.com> writes:

> Linus Torvalds <torvalds at linux-foundation.org> 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/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20100623/bed4c68f/attachment.pgp>


More information about the Mercurial-devel mailing list