The sound distributed version control system

#298 Feature Discussion: Mercurial like *topics*

Opened by MarvinHannott on February 4, 2021 Feature request
MarvinHannott on February 4, 2021

Mercurial’s evolve extension has a very interesting feature: topics. In short, topics categorizes commits by adding a shared tag, which can be leveraged by various commands. For example, it is simple to only log, bisect or prune (equivalent to unrecord) commits within a certain topic. Also, it adds semantic meaning to commit messages and it is a powerful model to handle dependend commits. I think that it is a very useful feature and that I only scratched the surface of what could be done with that.

If Pijul should gain a similar feature, I think it should have these properties:

  1. It is completely optional to use topics!
  2. The patch’s identity shouldn’t depend on topics, so they can be added, changed or removed retroactively.
  3. One patch can be in arbitrary many topics
  4. They are shared with the remote, and by extension, with all other contributors
  5. They don’t require namespacing, unlike branches. They are not branches!
pmeunier added tag Feature request on December 7, 2021
coconut on February 28, 2022

This sounds good since in pijul, patches are known by their hashes, for the most part (if not ONLY). For example:

# Dependencies
[a] ...
[b] ...
[*] ...

I think what you are talking about (whether we call it topics or whatever else) is a good idea.