Inspiration

The idea for Co-Commit came from our team's frustration with trying to come up with meaningful and descriptive commit messages on tight deadlines. We wanted to find a way to streamline the commit process, so we could focus on writing code and not worry about crafting the perfect commit message.

What it does

Co-Commit is a Visual Studio Code extension that helps developers create clear and concise commit messages at the click of a button.

How we built it

We fine-tuned existing LLM models on our own dataset. We scraped high visibility popular open-source GitHub repositories such as Angular, BitCoin, Axios, etc. We parsed git diffs and other code context features and input them into our model. To facilitate the model, we built a proxy server for relaying the requests securely, and we built it into a VSCode extension for ease of use.

Challenges we ran into

It was difficult to find clean data, and we wanted to find established repos with high-quality code-commit examples. This proved to be difficult as even high-quality open-source repos can have bad commits as well.

Accomplishments that we're proud of

We built a working prototype!

What we learned

We had great hands-on experience developing an NLP model, it also gave us a better understanding of existing LLM models as we found their deficiencies in some areas.

What's next for Co-Commit

For larger commits spanning more than two files, our model does not respond. These large commits do not follow typical code conventions as they should be made smaller. However, to solve this, we can create a list of commit messages for each git diff in each individual file. Another improvement is to expand the NLP pipeline by adding an additional classifier that determines the appropriate type of git commit specified by Conventional Commit Standards. This would feed into our original model, and would also help the generation of commit messages.

Share this project:

Updates

posted an update

This is the result of running the model on a completely new repo.

Similarity score: 0.8725507269547104
Original commit message:  build(deps): bump follow-redirects from 1.13.0 to 1.14.7 (#<issue-num>)
Generated commit message:  build: update follow-redirects dependency follow-redirects (#<issue-num>)

Similarity score: 0.797918305868666
Original commit message:  fix(watch): avoid traversing objects that are marked non-reactive (#<issue-num>)
Generated commit message:  refactor: minor tweaks to _traverse (#<issue-num>)

Similarity score: 0.8419286185357832
Original commit message:  chore: update backers [ci skip] (#<issue-num>)
Generated commit message:  chore(docs): update list of Patreon backers

Similarity score: 0.8449522239529963
Original commit message:  fix(types): async Component types (#<issue-num>)
Generated commit message:  refactor(types): Add esModule type (#<issue-num>)

Similarity score: 0.7395555976121051
Original commit message:  fix: further adjust max stack size
Generated commit message:  fix(server): Fix write logic on NodeJS >= 8.15 (#<issue-num>)

Similarity score: 0.7355464240298435
Original commit message:  chore: update sponsors [ci skip] (#<issue-num>)
Generated commit message:  docs: add modus to Vu's partnerships (#<issue-num>)

Similarity score: 0.7242157912253526
Original commit message:  feat: add browser ESM build
Generated commit message:  build: configure runtime config and runtime output differently (#<issue-num>)

Similarity score: 0.7992659720431021
Original commit message:  feat: support functional components in defineComponent
Generated commit message:  test(types): add functional component array props tests (#<issue-num>)

Log in or sign up for Devpost to join the conversation.