Which parts of Evolve can be upstreamed?

Pierre-Yves David pierre-yves.david at ens-lyon.org
Fri Feb 12 22:22:04 UTC 2021



On 2/11/21 11:54 PM, Martin von Zweigbergk via Mercurial-devel wrote:
> On Mon, Feb 8, 2021 at 11:28 PM Pierre-Yves David
> <pierre-yves.david at ens-lyon.org> wrote:
>>
>> The short answer is:
>>
>> They are comment in multiple source files about their status and the
>> part that can be uptreamed.
>>
>>
>> For a longer answer I need to double check my notes.
>> On a general basis :
>> - The user facing command is the most "mutable" part that we will likely
>> keep experimenting for a while.
> 
> Sure, they may always change a bit, but I think obslog and prune have
> been quite stable for a while.

The obslog command is in a good shape, the extensive rework done in 
2020, has been completed and properly validated with users. That is a 
good candidate for upstreaming. I am fully supporting of moving that 
code upstream.

Regarding prune, however, that is premature. `The "core" set of history 
editing command provided by evolve is not stable and expected to need 
significant rework and user testing (including on older Mercurial 
version). In 2020 we actually got a batch of new feedback about `hg 
prune` that we will look into within 2021. So, as the current maintainer 
of evolution, including the `hg prune` command, I want it to stay within 
evolve for now, and I don't approve upstreaming it yet.

> I know that the obslog output was
> changed quite a bit recently, but that change could have been done in
> core instead if it had been there.

Actually, no it could not. [putting my "head of Octobus" hat on] The 
overall health of Mercurial core development makes it significantly 
harder to do work there, to the point where multiple people under the 
larger Octobus umbrella have expressed expressed their wish to avoid it, 
even sometimes refusing to do work if it involves core development.


(I hope this does not comes as a surprise to you as I already sent this 
feedback to multiple reviewers/steering-committee members, and I know 
other have tried to alert on various issues too.)


So some of the large work that Octobus funded in evolve in the past 
years would not have happened at all in Mercurial core because they 
would have been significantly more expensive to do, or it would have 
been harder to find someone to do them.


Development also has other reasons for happening in the extension (eg: 
release cycle, compatibility with older version, etc). However since 
this is covered by various documentation and discussed lengthy in the 
past, I won't spend more time writing about it again.

> Maybe I'll start upstreaming the changes to rewriteutil.py that have
> been added in since the last attempt.

This looks like a good idea. rewriteutils.py is a set of utility that 
adds great value to core and is easy to extend from the extension when 
needed. So +1 for that.


> Then I'll see if I can upstream
> the prune command.

So, as pointed above, please look into upstreaming obslog instead.

>> - The latest upstreaming effort was around the stack concept that proved
>> itself central for providing a consistent UX around `hg evolve` in
>> distributed context. I would be happy to see it get to conclusion.
>> - The change to heads computation and checking is a good candidate for
>> upstreaming is all the logic live in core and they "wrapping" in the
>> extension are neither very clean nor performant
> 
> I looked into that a bit. It seems it's used for some
> experimental.single-head-per-branch that I had never heard of. If
> that's correct, it doesn't seem that useful to me at least. If others
> care about that option, they can upstream that part. Correct me if I
> misunderstood what the "heads computation and checking" is about, of
> course.

This is logic related to how we compute heads of branch when 
obsolescence is involved. It is important for people using Mercurial to 
push and pull draft changesets to common servers, something that I don't 
think Google is doing. This is pretty important to provide useful 
workflows to a more generic set of Mercurial users. If you are not 
interested in that, I'll see if I can nerd-snipe Joerg into moving it 
upstream o:-).

>> On 2/8/21 11:59 PM, Martin von Zweigbergk wrote:
>>> Hi,
>>>
>>> We have talked about upstreaming the Evolve extension for years and some
>>> of it has been upstreamed, but most of it remains. I think most of us
>>> agree that it would be good to have it upstreamed at some point. Are
>>> there some uncontroversial parts that I can start moving upstream? The
>>> obslog and prune commands seem like good candidates to me. What do you
>>> think?


-- 
Pierre-Yves David



More information about the Mercurial-devel mailing list