jj icon indicating copy to clipboard operation
jj copied to clipboard

FR: Workstream markers

Open andriyDev opened this issue 2 months ago • 3 comments

Is your feature request related to a problem? Please describe. Often times I want to manage several different workstreams at once, so I'll work on one task for a while (generating several commit trees associated with it for each of my various attempts), then I'll take a break and work on a different task (which generates its own set of attempts). This ends up making my history a jumble of commits from various unfinished projects and attempts that are hard to keep track of. Often these commits are unnamed as I just decide I don't like a path and want to try another attempt on a different commit (with the possibility of coming back). Having many unnamed commits corresponding to a mix of tasks sucks!

Describe the solution you'd like A system for marking commits automatically. For example:

  1. jj marker set-default bug_1234. Any new commits created after that point are marked with the bug_1234.
  2. jj log --markers=bug_1234 to display only commits with that marker.
  3. jj marker add -r @- bug_1234
  4. jj marker remove -r @- bug_1234

Commits could maybe have multiple tags allowing to do all sorts of filtering.

Describe alternatives you've considered One simpler solution could be to provide a way to set the default commit message for "working directory" commits. This way at least any commits that I don't explicitly jj commit will have an appropriate name for what I was working on at the time, and hopefully the actually committed commits have more descriptive names.

A workaround as a user could be to use workspaces, however this seems like a big hammer since I don't really need a whole other file tree for one task, and I don't intend to work on things in parallel here.

andriyDev avatar Oct 25 '25 05:10 andriyDev

This sounds a lot like Topics, which isn't really defined yet. But for your specific case, couldn't you just use describe? There is a setting for the default description in the editor.

joyously avatar Oct 25 '25 06:10 joyously

Ahh topics (#3402) do seem similar, assuming that it behaves in the "no constraints" manner.

Describe only works if I do it for every single commit, which I may forget to do if I'm trying out lots of versions of a feature design, or if I want to quickly switch between workstreams.

I tried changing the default description, but that only works if you call jj commit, it doesn't automatically apply to jj new for example.

andriyDev avatar Oct 25 '25 06:10 andriyDev

Well, you can make an alias for your temp message. Both new and commit take a -m option.

joyously avatar Oct 25 '25 06:10 joyously