Skip to content

Commit 1e10646

Browse files
committed
docs: add commit convention
1 parent a88ffb7 commit 1e10646

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

.github/COMMIT_CONVENTION.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
## Git Commit Message Convention
2+
3+
> This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular).
4+
5+
#### TL;DR:
6+
7+
Messages must be matched by the following regex:
8+
9+
``` js
10+
/^(revert: )?(build|chore|ci|docs|feat|fix|perf|refactor|style|test)(\((core|config|spinner|deps)\))?: .{1,72}$/
11+
```
12+
13+
#### Examples
14+
15+
Appears under "Features" header, `core` subheader:
16+
17+
```
18+
feat(core): support top direction
19+
```
20+
21+
Appears under "Bug Fixes" header, `spinner` subheader, with a link to issue #28:
22+
23+
```
24+
fix(spinner): animation compatibility
25+
26+
close #28
27+
```
28+
29+
Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation:
30+
31+
```
32+
perf(core): use @infinite event instead of on-infinite property
33+
34+
BREAKING CHANGE: The 'on-infinite' property has been removed.
35+
```
36+
37+
The following commit and commit `a88ffb7` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header.
38+
39+
```
40+
revert: feat(core): support top direction
41+
42+
This reverts commit a88ffb776878a07cb2f349bc3dd8cce59932b7e1.
43+
```
44+
45+
### Full Message Format
46+
47+
A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**:
48+
49+
```
50+
<type>(<scope>): <subject>
51+
<BLANK LINE>
52+
<body>
53+
<BLANK LINE>
54+
<footer>
55+
```
56+
57+
The **header** is mandatory and the **scope** of the header is optional.
58+
59+
### Revert
60+
61+
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
62+
63+
### Type
64+
65+
If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog.
66+
67+
Other prefixes are up to your discretion. Suggested prefixes are `docs`, `chore`, `style`, `refactor`, and `test` for non-changelog related tasks.
68+
69+
### Scope
70+
71+
The scope is optional, there are the supported scopes: `core`, `spinner`, `config` and `deps`.
72+
73+
### Subject
74+
75+
The subject contains succinct description of the change:
76+
77+
* use the imperative, present tense: "change" not "changed" nor "changes"
78+
* don't capitalize first letter
79+
* no dot (.) at the end
80+
81+
### Body
82+
83+
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
84+
The body should include the motivation for the change and contrast this with previous behavior.
85+
86+
### Footer
87+
88+
The footer should contain any information about **Breaking Changes** and is also the place to
89+
reference GitHub issues that this commit **Closes**.
90+
91+
**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.

0 commit comments

Comments
 (0)