Comment by Zambyte
9 days ago
Sure. I was a bit loose with my vocab in my previous comment - I'm going to try to be more specific by using the terms as defined in the jj glossary[0] (particularly "change" vs "commit").
- I start by using jj new to create a new change where I want to start working.
- I open codex, and prompt it to do something.
- Roughly every prompt, I will naturally check the cumulative diff using jj diff.
- If I want to check the diff log of the working change, I'll use jj evolog.
- If I want to check the diff from the previous prompt, I'll use jj diff -f xx/1, where xx is the short change ID for the working change, and 1 is how many prompts ago I want to look at the diff for (jj evolog can help with finding the change I'm interested in)
- If I want to undo all or some of what a prompt did, I'll use jj restore -f xx/1, potentially with -i or a fileset.
- When I've prompted / restored / made changes myself to the point where I am happy with a change, I'll usually ask codex to write a conventional commit message for <commit_id>. Codex will then use *git* to look at the diff in that commit (which has no commit message), and give it will usually give an appropriate commit message[1] (sometimes I'll tweak this if there are details I want to add or remove). I use jj ci (short for jj commit) to finish the change and add the commit message.
- I'll then advance bookmarks as necessary with jj b m (short for jj bookmark move) and probably push.
cool approach, i havent used jj actually in my workflow, ill try to adopt