Note:

This page is primarily intended for developers of Mercurial.

Topics Roadmap

This page contains status of various things related to the topic extension.

1. Topics

The topic extension contains two related concepts, topic and stack.

The topic concept focus on solving the Feature Branch problem. Its goal is to help identify and exchanges draft that belongs to short lived feature branch. It focus on being lightweight to use with a simple and clear life cycle.

The stack concept focus on providing a good interface to deal with a stack of patches. If topic concept helps to defines the current set of changeset related to your current work, the stack concept helps to actually do work on the stack. The focus is on simplifying visualization, edition and movement within the stack. It also introduces ways to smooth some of the changeset evolution concepts.

The stack concept does not depends on the topic concept. Anything able to define a stack could reuse the work done around the stack concept.

2. Goal of the Topic concept

Topic primary goal is to solve the feature branch struggle.

3. Goal of the Stack

Stack primary goal is to provide a smooth experience when working with a stack of commit.

The "stack" does not needs to be always linear at all time. Having multiple heads locally is sometimes practical for short while. Evolution will also allow creation of non-topological-linear stack (even is the "semantic" may stay linear)

We do not really care about what defines the stack. Right know we supports:

Overall we wants to be able to:

4. Possible Road Map

Stack is quick valuable in many aspect, especially for the local usecase (fill the MQ usecase, simplify) so it would make senses to try to stabilize and upstream that first. In addition, nothing from stack involve any "format" changes or behavior changes in itself, so it seems simpler to start there.

4.1. Proof of concept stage

This is what is currently happening in the "topic" extension, in the hg-evolve repository.

The goal is to get the core behavior of both "stack" and "topic" up and running to be able to play with it and get wider feedback from various places with various workflow.

Adding other way to define stack other than topic is perfectly fine here.

4.2. Moving "stack" to core

We move it an experimental 'stack' extensions ("hgext/stack.py") first.

This involves at least:

a) the stack command and associated features, b) movement comment (next/prev, {'t#'}, etc) c) smooth, handling of orphan through (hg next)

Using named branch to define the stack by default seems fine since this is already available in core. Having topic plug into that logic to offer an definition for stack.

(We need to expand that plan a bit, but I would like to keep things simple for now.)

Hopefully, we could do that during the 4.4 cycle. We should also get involved with the Gregory Szorc work around hg show stack there seems to be synergy there.

4.3. Moving "topic" to core

There is a bit more discussion and exploration we need to do around topic, so we could focus on stack first. But then moving it into either the "stack" extension of its own "topic" extensions would be a good first step. Especially there is multiple awful hack in the current extension that would be easier to clean up closer to core.

TopicRoadmap (last edited 2021-10-08 11:55:18 by GeorgesRacinet)