git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: potential improvement to 'git log' with a range

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Apr 10, 2010, 01:20 UTC
Message-ID
<alpine.LFD.2.00.1004091807220.3558@i5.linux-foundation.org>
In-Reply-To
<n2t3abd05a91004091713s4d081106qd74419425b25e8e@mail.gmail.com>
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.

It's arguably a bit confusing, but quite frankly, the room for confusion is very small, and the biggest source of confusion is probably not so much that ".." means two different things in two (clearly different) contexts, as much as just the fact that people aren't used to thinking in terms of set operations at all.

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.

To make things even more exciting triple-dot, "A...B" has two different meanings too, again one that is about sets ("symmetric difference") for the log-based ones, and one that is a somewhat badly defined range for the diff based ones (where the end-points are "one common nearest ancestor of A and B" and "B" respectively).

It's all actually very natural when you get used to it, although that "A...B" as a range really isn't well-defined, since there can be more than one common nearest ancestors. It's still often enough useful in practice that I wouldn't get rid of it, but it's not the greatest feature.

		Linus
Previous: Sverre RabbelierNext: Aghiles
Message 6 of 18 in “potential improvement to 'git log' with a range”
  1. AghilesApr 9, 2010
  2. Santi BéjarApr 9, 2010
  3. Sverre RabbelierApr 9, 2010
  4. AghilesApr 10, 2010
  5. Sverre RabbelierApr 10, 2010
  6. Linus TorvaldsApr 10, 2010
  7. AghilesApr 11, 2010
  8. Jakub NarebskiApr 11, 2010
  9. Martin GeislerJun 23, 2010
  10. Jakub NarebskiJun 23, 2010
  11. Martin GeislerJun 23, 2010
  12. Jakub NarebskiJun 23, 2010
  13. Martin GeislerJun 23, 2010
  14. Jay SoffianJun 23, 2010
  15. Junio C HamanoJun 23, 2010
  16. Jay SoffianJun 23, 2010
  17. Junio C HamanoJun 24, 2010
  18. Jay SoffianJun 24, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.