Re: potential improvement to 'git log' with a range
- From
Martin Geisler <mg@lazybytes.net>
- Date
- Jun 23, 2010, 17:05 UTC
- Message-ID
- <87bpb1issa.fsf@hbox.dyndns.org>
- In-Reply-To
- <m3tyrhfzg8.fsf@localhost.localdomain>
Jakub Narebski <jnareb@gmail.com> writes:
Show 26 quoted lines
> Linus Torvalds <torvalds@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/