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

Re: [PATCH] Document what the stage numbers in the :$n:path syntax mean.

From
JHJan Hudec <bulb@ucw.cz>
Date
Aug 20, 2007, 18:08 UTC
Message-ID
<20070820180809.GA8542@efreet.light.src>
In-Reply-To
<7v4piuafqy.fsf@gitster.siamese.dyndns.org>
On Sun, Aug 19, 2007 at 23:20:53 -0700, Junio C Hamano wrote:
Show 28 quoted lines
> Steven Grimm <koreth@midwinter.com> writes:
> 
> > Junio C Hamano wrote:
> >> People should learn this command.  Really.
> >>
> >>       $ git cat-file -p :$n:path
> >>
> >> where $n == 2 is ours, $n == 1 is common ancestor, and $n == 3
> >> is theirs.
> >
> > The git-rev-parse manpage talks about the :$n:path notation (buried deep in
> > a list of other syntax) but it just says $n is a "stage number" -- someone
> > who is not familiar with the internals of git's merge implementation is
> > never going to be able to figure out that "1", "2", and "3" mean what Junio
> > said.
> 
> The patch makes sense.  Thanks.
> 
> Just to give historical background to new readers, this is
> primarily because the really core level of the plumbing started
> as not caring between stages 2 and 3 (iow, as far as the merge
> is concerned, both heads are equal), and the description in the
> manual was written back then.
> 
> These days, all the merge strategies and other non-merge
> programs such as "git am" that can record conflicts as
> multi-stage index entries consistently use stage #2 as our
> version, and stages #2 and #3 are not equals anymore.
Pardon me? In what are they not equal?

In merge, the parents *are* equall. They are just recorded in the resulting commit in particular order and the stages are in that order.

Besides if I prepare a merge locally to push out to a shared repo, I will probably switch to the mainline and merge my branch in, so it will actually be my changes in stage #3. That is to say 'ours' and 'theirs' don't really express what is going on IMHO.

-- 
						 Jan 'Bulb' Hudec <bulb@ucw.cz>
Previous: Junio C HamanoNext: Junio C Hamano
Message 18 of 22 in “merge-recursive: do not rudely die on binary merge”
  1. Junio C HamanoAug 14, 2007
  2. Chris ShoemakerAug 14, 2007
  3. Junio C HamanoAug 15, 2007
  4. Nikodemus SiivolaAug 15, 2007
  5. Junio C HamanoAug 15, 2007
  6. Document what the stage numbers in the :$n:path syntax mean.Steven Grimm, Aug 20, 2007
  7. Jeff KingAug 20, 2007
  8. Shawn O. PearceAug 20, 2007
  9. Shawn O. PearceAug 20, 2007
  10. Florian WeimerAug 20, 2007
  11. Jeff KingAug 20, 2007
  12. Junio C HamanoAug 20, 2007
  13. Jeff KingAug 20, 2007
  14. Jakub NarebskiAug 22, 2007
  15. Jeff KingAug 20, 2007
  16. Johannes SixtAug 20, 2007
  17. Junio C HamanoAug 20, 2007
  18. Jan HudecAug 20, 2007
  19. Junio C HamanoAug 20, 2007
  20. Junio C HamanoAug 15, 2007
  21. Chris LarsonAug 15, 2007
  22. Chris ShoemakerAug 15, 2007

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.