Live data from Hacker News

Show HN: Tool to Automatically Create Organized Commits for PRs

github.com

1–10 of 54 posts

Show HN: Tool to Automatically Create Organized Commits for PRs

#1
I've found it helps PR reviewers when they can look through a set of commits with clear messages and logically organized changes. Typically reviewers prefer a larger quantity of smaller changes versus a smaller quantity of larger changes. Sometimes it gets really messy to break up a change into sufficiently small PRs, so thoughtful commits are a great way of further subdividing changes in PRs. It can be pretty time consuming to do this though, so this tool automates the process with the help of AI.

The tool sends the diff of your git branch against a base branch to an LLM provider. The LLM provider responds with a set of suggested commits with sensible commit messages, change groupings, and descriptions. When you explicitly accept the proposed changes, the tool re-writes the commit history on your branch to match the LLM's suggestion. Then you can force push your branch to your remote to make it match.

The default AI provider is your locally running Ollama server. Cloud providers can be explicitly configured via CLI argument or in a config file, but keeping local models as the default helps to protect against unintentional data sharing. The tool always creates a backup branch in case you need to easily revert in case of changing your mind or an error in commit re-writing. Note that re-writing commit history to a remote branch requires a force push, which is something your team/org will need to be ok with. As long as you are working on a feature branch this is usually fine, but it's always worth checking if you are not sure.

Show HN: Tool to Automatically Create Organized Commits for PRs
github.com

Re: Show HN: Tool to Automatically Create Organized Commits for PRs

#2
Can I suggest, don't do this? The sustainable unit of code modification is the ticket, not the commit. When you're ready to merge to main, squash all commits into one that takes the ticket title as its commit message and appends the ticket description as its description. This aligns code changes with planned, scoped, and documented units of work. Anything more granular than that quickly becomes noise. By following the above pattern your main commit history becomes a clean, consistent log of tickets being completed, each linking directly back to your ticket management system.

Re: Show HN: Tool to Automatically Create Organized Commits for PRs

#3
I haven't tried this yet (though I plan to).

One thing I would love is if I could give it a hint and have it extract out certain types of changes into its own branch that could split into a new PR.

I often find myself adding a new, re-usable component or doing a small refactor in the middle of a project. When you're a few commits into a project and start doing side-quests, it's super annoying to untangle that work.

The options are one of:

1. A mega PR (which everybody hates) 2. Methodologically untangling the side quest post-hoc 3. Not doing it

In principle, the "right" thing to do would be to go checkout main, do the side quest, get it merged and then continue.

But that's annoying and I'd rather just jam through, have AI untangle it, and then stack the commits (ala Graphite).

It's easy to verbally explain what stuff is side-quest vs. main quest but it's super annoying to actually do the untangling.

Maybe this tool magically can do that... but I do wonder if some context hints from the dev would help / make it more effective.

Re: Show HN: Tool to Automatically Create Organized Commits for PRs

#5

Can I suggest, don't do this? The sustainable unit of code modification is the ticket, not the commit. When you're ready to merge to main, squash all commits into one that takes the ticket title as its commit message and appends the ticket description as its description. This aligns code changes with planned, scoped, and documented units of work. Anything more granular than that quickly becomes noise. By following th…

The best practice that I've seen done (and enjoy) is:

1. Always squash and merge 2. But have tidy commits 3. So your squashed commit has a useful list of what is in the commit

Re: Show HN: Tool to Automatically Create Organized Commits for PRs

#6

I haven't tried this yet (though I plan to). One thing I would love is if I could give it a hint and have it extract out certain types of changes into its own branch that could split into a new PR. I often find myself adding a new, re-usable component or doing a small refactor in the middle of a project. When you're a few commits into a project and start doing side-quests, it's super annoying to untangle that work. T…

Interesting! I’ve faced the same problem where I have a mega PR and spend a lot of time breaking that up into separate PRs. I agree that what you are suggesting is a different but related problem to what this tool currently solves. I’ll start thinking through how this would look, and I’ll go ahead and make a GitHub issue if you or anyone else wants to start a discussion there.

Re: Show HN: Tool to Automatically Create Organized Commits for PRs

#7

I haven't tried this yet (though I plan to). One thing I would love is if I could give it a hint and have it extract out certain types of changes into its own branch that could split into a new PR. I often find myself adding a new, re-usable component or doing a small refactor in the middle of a project. When you're a few commits into a project and start doing side-quests, it's super annoying to untangle that work. T…

I haven't tried it much but this seems like precisely the problem gitbutler is trying to solve

Re: Show HN: Tool to Automatically Create Organized Commits for PRs

#8

Can I suggest, don't do this? The sustainable unit of code modification is the ticket, not the commit. When you're ready to merge to main, squash all commits into one that takes the ticket title as its commit message and appends the ticket description as its description. This aligns code changes with planned, scoped, and documented units of work. Anything more granular than that quickly becomes noise. By following th…

This project seems focused on preparing branches for review by giving them clearly communicated commit histories.

I think the intent is that it be up to the org to decide whether they’ll accept a stream of commits to merge or squash merge after approval.

Re: Show HN: Tool to Automatically Create Organized Commits for PRs

#9
post #6

I haven't tried this yet (though I plan to). One thing I would love is if I could give it a hint and have it extract out certain types of changes into its own branch that could split into a new PR. I often find myself adding a new, re-usable component or doing a small refactor in the middle of a project. When you're a few commits into a project and start doing side-quests, it's super annoying to untangle that work. T…

Interesting! I’ve faced the same problem where I have a mega PR and spend a lot of time breaking that up into separate PRs. I agree that what you are suggesting is a different but related problem to what this tool currently solves. I’ll start thinking through how this would look, and I’ll go ahead and make a GitHub issue if you or anyone else wants to start a discussion there.

Awesome!

Re: Show HN: Tool to Automatically Create Organized Commits for PRs

#10
Since moving to jj[1] as a git-compatible alternative, I’ve found it so easy to make clean commits I do it by default for everything - usually 1/ refactor 2/impl, 3/ docs. Because you can always just “jj new” on top of an existing change then squash it down and get automatic rebase past that point it’s quick to keep things organised and makes review life suck less.

[1] https://github.com/jj-vcs/jj

Post reply on HN