Obsmarkers exchange between crew and main (formely: Re: mercurial/crew at 21816: 7 outgoing changesets)
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Tue Jun 24 05:52:52 CDT 2014
On 06/23/2014 07:35 PM, Matt Mackall wrote:
> On Mon, 2014-06-23 at 19:13 +0100, Pierre-Yves David wrote:
>>
>> On 06/23/2014 07:10 PM, Matt Mackall wrote:
>>> On Mon, 2014-06-23 at 03:47 -0700, Pierre-Yves David wrote:
>>>>
>>>> On 06/18/2014 04:00 AM, Mercurial Commits wrote:
>>>>> 7 outgoing changesets in mercurial/crew:
>>>>
>>>> Can someone from crew pull main into crew to suppress this message?
>>>
>>> Can we automate the transfer of just obsolete markers?
>>
>> Now that we have smart excahge, will excahgne the marker only if the
>> successors are also exchanged.
>
> First, are you sure? I pull from crew/clowncopter and constantly get "no
> changes found" followed by 10 seconds of OBSEXC.
I'm sure that the smarter exchange (in place since March) is only trying
to exchange markers "relevant to" changesets common to source and
destination.
This does not mean that the exchange itself is perfect. The discovery is
slow and buggy hence the delay. My statement that the exchange needs
more work is not just a conversation filler ;-)
> Second, I think that the above is a pretty clear use-case for exchanging
> markers even if no changesets are exchanged.
I'm certain we do not want this as the default behavior.
Alice's repo is
o C
|
o B
|
o A
|
o O
Babar repo is:
o B'
|
o A'
|
x | B
| |
x | A
|/
o O
If pulling from Babar to Alice pulls markers A ← A' and B ← B', we end
up with obsoleting A and B in Alice. C become as unstable changeset.
But we cannot provide any sensible evolution of C because we lack the
successors of A and B.
This would also work is alice has B checkout. the pull give a "working
directory parent is obsolete" but `hg update` would remove the content
of B alice may be relying on.
(third rephrasing) Pulling obsolescence markers without the successors
transforms a replacement into a pruning. Confusing and misbehavior
would ensue.
So maybe we are in a special case that could requires a change in
behavior with extra configuration. But even if we change obsmarker
exchange, we would still have trouble with other aspect of the sync. For
example, the @ bookmark will still be on the (now obsolete) heads,
keeping the obsolete branch alive. We would need the new heads to
properly propagates the bookmarks.
In my opinion we should make a full forward synchronization and pull
main into crew.
--
Pierre-Yves David
More information about the Mercurial-devel
mailing list