[PATCH 1 of 4 V2] obsolete: track node versions
Jun Wu
quark at fb.com
Thu Mar 30 12:33:16 EDT 2017
Per discussion on IRC. I'll drop this series from patchwork and send a new
version with better documentation and some planned fixes.
Excerpts from Jun Wu's message of 2017-03-27 01:49:03 -0700:
> Thanks for the detailed reply. I have replies on multiple subtopics. But I
> deleted topics that I think are less important, to make the most important
> topic clear, and make the discussion more efficient. If you think I need to
> respond to more topics, feel free to point me at them.
>
> Excerpts from Pierre-Yves David's message of 2017-03-27 09:14:53 +0200:
>
> [snip]
>
> > Simple practical example with date:
> > -----------------------------------
> >
> > [time-1] repo-B: changeset C-A is pulled from repo-A
> > [time-2] repo-A: changeset C-A is rewritten as C-B (time-2)
> > [time-3] repo-B: changeset C-C is marked as superceeded by C-A (time-3)
> > [time-4] repo-B: Changeset C-B (with marker) is pulled from repo-A
> >
> > The markers pointing from C-B to C-A have a version "time-2" but "C-A"
> > now have a version of "time-3". "C-A" become wrongly un-obsoleted (and
>
> I think we basically disagree here. You said that "C-A" being visible does
> not match "the meaning of the user action", could you define "the meaning of
> the user action" formally ?
>
> In the "node version" approach, the "meaning of a user action", where action
> is "creating a marker", is defined as below:
>
> When the user replace changeset X with Y, the marker X -> Y gets created,
> they want Y to be visible, regardless of what previous (local or remote)
> attempts hiding it.
>
> So the un-obsolete behavior is expected.
>
> > C-B is in strange state). The fact C-A is un-obsoleted here is a bug and
>
> Strictly speaking, C-B still has an obsoleted precursor of C-A. If we draw a
> 2-D graph, where Y-axis is revision, X-axis is time, and markers are edges,
> the above case could be represented like:
>
> ^ rev
> | C-C
> | \
> | C-A C-A
> | \
> | C-B
> |
> +---------------> time
>
> Note that there are 2 "C-A"s, the right one is visible, the left one is not.
> We show users the right one. Internally, the code could distinguish the
> different of 2 "C-A"s, if it wants.
>
> > do not match the meaning of the user action. This is a regression from
> > what evolution is currently able to achieve.
>
> [snip]
More information about the Mercurial-devel
mailing list