1

I am trying to switch to semantic commit messages for project. While the idea is good, sometimes I find it is difficult to properly categorize changes like a configuration value change.

If I commit a change in a database password or raise the size of a worker pool, what is the appropriate type for it? Is it a chore, fix or a refactor? Should I determine the type based on what has changed, or why the change was necessary?

2

What's needed here is clear definitions of the categories. Chore needs some attention.

A Semantic Commit Message looks like this:

    feat: add hat wobble
    ^--^  ^------------^
    |     |
    |     +-> Summary in present tense.
    |
    +-------> Type: chore, docs, feat, fix, refactor, style, or test.

seesparkbox.com - semantic commit messages

Type definitions:

  • chore: (updating grunt tasks etc; no production code change)
  • docs: (changes to the documentation)
  • feat: (new feature for the user, not a new feature for build script)
  • fix: (bug fix for the user, not a fix to a build script)
  • refactor: (refactoring production code, eg. renaming a variable)
  • style: (formatting, missing semi colons, etc; no production code change)
  • test: (adding missing tests, refactoring tests; no production code change)

karma-runner - git commit msg

Examples:

  • chore: add Oyster build script
  • docs: explain hat wobble
  • feat: add beta sequence
  • fix: remove broken confirmation message
  • refactor: share logic between 4d3d3d3 and flarhgunnstow
  • style: convert tabs to spaces
  • test: ensure Tayne retains clothing

seesparkbox.com - semantic commit messages

Of these, the least clearly defined is chore. Lets flesh that out.

I suspect that grunt task may refer specifically to Javascript's build tool grunt. In which case, they probably didn't have in mind changes involving implementation or private internal methods, but rather tool changes, configuration changes, and changes to things that do not actually go into production at all. (Our shop currently uses it for those, and also for simple refactoring.)

StackOverflow - When to use “chore” as type of commit message?

The danger with a poorly defined type is that it can become the catch all when something doesn't fit into the other types. Maybe you want that but I'd discourage this practice if a minor expansion of the types to fit your shops particular style of development can solve the problem.

For your case I'd say "a change in a database password or raise the size of a worker pool" are both configuration changes that don't impact production code. They are neither fixes nor add features. So chore fits this best.

Consider a soon to expire certificate. It's not yet expired so it's not a fix. Updating it won't add any new features. Yet this is in production. It's just not code. Guess it's a chore. Meh.

I could see making a new category to separate changes in production, even when not in code, from changes to our development stack. But that's up to your shop. If you add new categories or use these types differently please clearly define them somewhere.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.