Testing an RC of evolve 11.0.0 and topic 1.0.0

Anton Shestakov av6 at dwimlabs.net
Mon Jan 30 15:24:01 UTC 2023


Hello, users of Mercurial, Evolve and/or Topic!

We're planning to release a feature release candidate of evolve and 
topic extensions that contains an implementation of a concept that was 
in the plans for quite some time: topic namespaces (the name could 
change, if we find something better) 
https://www.mercurial-scm.org/wiki/TopicPlan#sub_branches.2C_namespacing_and_representation

In short, topic namespaces are trying to fix one of our major UX flaws: 
branches can continue to be used for release management, and topics can 
still be used for implementing features, but now there would be 
something for organizing topics into wider concepts. Topic namespaces, 
just like topics, are designed to go away when you publish your commits, 
and we tried to make them as unobtrusive as possible, to not get in the 
way of current workflows. There is a default topic namespace that will 
not clutter the UI, and users can keep using only branches and topics as 
usual.

But we did change some things in the UI. Remember seeing "branch:topic" 
format in `hg branches`? Well, it was a temporary implementation detail. 
With the implementation of topic namespaces we introduce a more 
thought-out way to represent branches plus topics. In this new format, 
topic namespaces become sort of a glue for all things related to (named) 
branching, e.g. this is what you'd see in hg log:

   branch//namespace/topic

or, if you don't set topic namespace:

   branch//topic

In the future, we're going to support providing branches, topic 
namespaces (if you decide to use them) and topics in this format to all 
commands where it makes sense.

Now, what these topic namespaces are aimed at? Among other things, topic 
namespaces are supposed to help users manage topics; their own and other 
users'. Previously, some people were already using username as a prefix 
for their topic names - this was an ad-hoc implementation of separation 
and/or ownership of work, and now with topic namespaces it's becoming 
more standardized and user-friendly.

Here are more details on what aspects of workflow topic namespaces try 
to improve (taken from the wiki page linked above):

* on the client side, they could be used to safeguard history-rewriting 
operations and in particular avoid conflicting with other people's work

* code hosting providers and forges could map topic namespaces to their 
user or team concepts, and hence ultimately to their permission model

* they could be used to narrow user view and exchange to the part that 
are relevant to them by default

Although the UI didn't change much, and a big part of the planned 
features is not implemented yet, the changes that are included are quite 
extensive. We have changed a significant part of topic's representation 
locally and over the wire during the exchange. Given the scale of these 
changes we encourage people to test this release candidate. That would 
definitely help us pinpoint real issues that we didn't foresee during 
the planning and the development. It could also possibly give you some 
ideas how to integrate topic namespaces into your workflows early.

The release candidate is coming out in the next few days, and the final 
feature release will most likely be ready in about 2 weeks after that. 
During these 2 weeks you can reach out to us and tell if you notice 
something being broken, and we'll obviously try and fix it before the 
final release. That being said, topic namespaces are here to stay, 
although maybe under a different name and with some changes after 
testing in real circumstances.


More information about the Mercurial-devel mailing list