6 ms·
Have Gemini stage and write commit messages for you
- hadat 2y agoThe Auto-Commit Bot is a Python-based tool that automatically monitors a directory for changes, generates meaningful commit messages using the Google Gemini API, and commits the changes to a Git repository. It’s perfect for automating repetitive Git tasks and ensuring consistent commit messages.
- Etheryte 2y agoThese are not meaningful commit messages. A meaningful message says why something was done, not what files were changed. You can see what files were changed in every commit without writing it in the commit message.
- hadat 2y agoI would argue most people don't write meaningful commits also this was done in 2-3 hours so don't expect it to be perfect
- KTibow 2y agoThis doesn't let you include multiple files in a commit, right?
- traveler1 2y agoThis sort of thing probably doesn't work particularly well with file auto-saving, which is almost necessary for some language servers to reprocess files to reflect "real-time" in VSCode. Aren't you also just committing half-baked work and totally menial changes?
- progbits 2y agoAh this again? Commit message is not just a quick summary of what, it's also a historical record of why. Can't generate the latter from the diff.
- guitheengineer 2y agoTrue, but you can infer the why from what changed for a lot of cases e.g. - Add types for X, Y Z if the PR goal is to make types more strict, that message is clear. I feel like the quality will be worse than if the engineer really put some thought into it, but the problem is, commits are annoying to write. A lot of people do “wip” or do a worse than average job. Having a summary of what changed is still better than that. Edit: if you feed more context about what you’re trying to develop it will probably be able to infer.
- judofyr 2y agoI’d rather have «wip» commit messages, and thus forced to open the diff, than worrying of the message being hallucinated. I’m totally cool with people using this as an initial draft and then manually tweaking it though.
- isaacremuant 2y agoCommits are annoying to write is in the same space as "variable names are annoying to write". Communicating intent should be trivial or, if it's not, put effort into it because communication with that future dev may be essential . Now, maybe some bullet points may suffice and quickly be reshaped by AI to make it more succinct and clear but you still should make the effort. The more you do it, the more it becomes an easy part. The problem is when you copy and paste the same info in slightly different ways in many places and I can appreciate some form of suggestion around "you missed explaining why you want to change this part". There's a space for AIb but it isn't "so that I don't need to think".
- deleted 2y ago[deleted]
- crazygringo 2y agoI've never worked that way. In my mind, commit messages should be a quick summary of what. The basic motivation should be clearly labeled as a feature, bugfix, etc., but that's all. Commit messages are for quick browsing and a summary of what changed, not extensive justification. The why is too important to be put in a commit message. The product why belongs in a linked issue that describes the bug or use case in full detail. Meanwhile, the technical why's (why this particular solution as opposed to alternatives) belong in the code itself as comments.
- guitheengineer 2y agoCursor has this conveniently built in. I find it pretty handy, specially for wip commits It doesn’t know the intent of the commit though, so if you change X because of Y, it will just tell that X changed, without explaining why. Adding more context about what the ticket is about can probably solve that
- timcobb 2y agoI haven't been able to find that in the app
- tommiegannert 2y agoFor commit messages, the world seems full of bad commit messages, and commit hygiene. Does this do anything to help improve that? What I really want is a bot that groups my changes into logical commits. I.e. I tell what kind of change I want committed, and it stages only those patches. I noticed today that one of the big hardware stores in Switzerland has started using LLMs to generate descriptions. As expected, it's just drivel: > Do you need a new sealing ring for your washbasin siphon? No problem. The Geberit plug-in seal is exactly what you need. With a diameter of 32/46 mm, it fits perfectly and ensures that everything is tight. It has a height of 5.5 cm and a length of 2.3 cm, making it easy to handle and quick to install. It's simply worth its weight in gold when everything fits at the first attempt and you don't have to worry about whether the quality is right. So, whenever your washbasin siphon needs a refresh, the Geberit plug-in seal with its 3.2 cm is your first choice. Simply insert and you're done. https://www.jumbo.ch/de/bad-sanitaer/installationsmaterial/dichtungen-dichtmittel/geberit-steckdichtung---32--46-mm/p/4437440 https://www.jumbo.ch/de/bad-sanitaer/installationsmaterial/d...
- isaacremuant 2y agoPeople who are "programmers by coincidence" and think that commit messages or unit tests are a chore and they just do it to satisfy orders from other devs are the first who think have the AI do it is a good idea. There's a reason people feel TDD is hard if they don't want to think about properly modeling their problem. Reducing duplication and finding a good human computer interface with AI is great but if you just don't want to think at all, you'll just dump crap on the next guy and it's natural that you're "worried about being replaced by AI".
- hadat 2y agoYou sound pretty elevated would like to see your work and how you approach development practices, Secondly of you have actually worked on opensource projects and seen how people write commits you realize that the summaries are not so informative and you would have to go through the code to really know what was changed so having ai help you write messages is for the betterment of others to get a more detailed summary Also this was an afternoon project I did before I had a meeting just for fun
- stevage 2y agoCopilot already proposes commit messages for you, right?
- skywhopper 2y agoThis is a terrible idea. Do not do this.
- ahoka 2y agoExample from the readme: ‘Updated file1.txt with new content.’ Huh?
- hadat 2y agoHow much more descriptive could that be?
- toasteros 2y agoNo actually just write your own commit messages. Generally speaking, just write your own stuff.
- bravura 2y agoPlease don't jump on me: Am I the only person in this world who is an accomplished engineer and thinks commit messages are worthless? That if I want to roll back or dissect, I do it at the PR and not individual commit level? The need for very accurate comment messages occurs so rarely in my workflow that the value of crafting them correctly is not there. I ask honestly: Am I missing something here? Why? Is it something peculiar to my workflow I'm missing?
- dartos 2y agoIt depends on your workflow, ofc. If you run the kind of shop where your master branch is all merge commits, commit messages are useful.
- Etheryte 2y agoIn my experience, most of the value in commit messages isn't in rolling back and such, but in trying to understand history. At day job, I work on a product where some of the code is around two decades old, so you bet there's no one around who you could ask about it. Many of the problems that were solved at the time are solved for free out of the box with modern tooling, but you won't know if that's the case unless you know what problem a commit was fixing to begin with. You can read the diff, yes, but it won't tell you the why and that's what commit messages are for.
- bamboozled 2y agoWorking in production and fixing bugs I find them totally invaluable.
- tkzed49 2y agoI think a lot of people here maybe haven't used a PR + squash merge flow? Because I agree with you, when I'm doing operations on git history I just see the PR title from the squash merge. Squash merge lets the PR be the atomic unit, so commit messages don't matter as much. But if I read these comments as "I wouldn't let an AI write my PR description", I strongly agree.
- deivid 2y ago"feat: Enhance Auto-Commit Bot with new features and improvements" It's definitely _a_ commit message. Not sure it beats "asdasd" or "do stuff" though.
- Terretta 2y agodef generate_commit_message(self, diff): """ Generate a commit message using the Gemini API. """ prompt = f"Generate a concise and meaningful Git commit message for the following changes:\n\n{diff}" response = self.model.generate_content(prompt) return response.text.strip() and diff is just output of `git diff`. No context or comprehension of repo or treesitter to share code structure ... OTOH, it's an open source base and one can PR to it.
- hadat 2y agoThanks for the suggestion it was a boring afternoon so I decided to do something with gemini api so it's not something that I put much effort it
- talles 2y agoWe are automating commit messages now? Is it really that much of an effort to simply phrase what you just developed and type it out?
- masto 2y agoI tried this with a random commit from one of my projects: https://github.com/masto/LED-Marquee/commit/775d48fc0dd969de2dfb3c7212b6c900d83cdd2d https://github.com/masto/LED-Marquee/commit/775d48fc0dd969de.... You can read my human-crafted message there. By comparison, what follows is the one that Gemini came up with which is A: useless, and B: wrong. I don't want to be mean, but I would put this up there as almost the perfect example of what generative AI should never be used for. It cannot read your mind, and the commit description is where you say what the intention of the change is, not summarize what it contains. Fix: Remove platformio.ini from .gitignore and rename platformio.ini.dist This commit removes platformio.ini from the .gitignore file and renames platformio.ini.dist to platformio.ini. This allows the project's PlatformIO configuration to be tracked by Git and ensures consistent build settings across development environments. It also adds comments explaining how to configure OTA updates and override settings with a separate marquee.ini file.