-
Notifications
You must be signed in to change notification settings - Fork 633
Description
The example commit message of
feat!: send an email to the customer when a product is shipped
is actually non-conventional. The conventional style of commit message is that the imperative verb describes the character of the change done by the commit (add, allow, fix, drop, change, prevent, correct, substitute etc.) - in this example, however, the verb is part of the functionality of the feature that was implemented. Arguably, the commit verb says what the commit will do - and here, the commit doesn't "send an email", it "allow[s] to send an email" or "add[s] sending an email" etc.
Also, the rules say commit should say "what" and "why". In this case, grammatically the "what" is not obvious, and has to be explicated from the context (are we adding this functionality? maybe there is a post-commit hook that actually sends the emails and the commit is needed for that?)
If a style allowing just the title of the functionality implemented is allowed, it's possible it will be even more ambiguous than here - what if you're working on a bug tracker software patch? (Jira or Redmine e.g.) You'd then have e.g. "feat: remove bug list view", and now tell me: does this remove the bug list view from the software, or adds the functionality to remove the bug list view for the software user? :)