mirror of
https://github.com/conventional-commits/conventionalcommits.org.git
synced 2024-11-15 02:45:15 +01:00
feat: enable BREAKING with all types (#11)
This commit is contained in:
parent
dbaf1febd1
commit
67553aa72a
@ -8,8 +8,9 @@ languages:
|
||||
|
||||
versions:
|
||||
- 1.0.0-beta
|
||||
- 1.0.0-beta.1
|
||||
|
||||
current_version: 1.0.0-beta
|
||||
current_version: 1.0.0-beta.1
|
||||
|
||||
# Default author, for when none is set
|
||||
author: Benjamin Coe
|
||||
|
@ -1 +0,0 @@
|
||||
conventionalcommits.org
|
@ -1,28 +0,0 @@
|
||||
# ConventionalCommits.org
|
||||
|
||||
This repo is the home of the Conventional Commits specification.
|
||||
|
||||
## Repo Layout
|
||||
|
||||
* `./index.md`: contains the current version of the specification.
|
||||
* `./spec`: contains past versions of the specification.
|
||||
* `./lang`: contains various translations of the specification.
|
||||
|
||||
## Contributing
|
||||
|
||||
We'd love your help refining the language of this specification,
|
||||
fixing typos, or adding more translations. Please don't hesitate
|
||||
to send a pull request.
|
||||
|
||||
### Adding a translation
|
||||
|
||||
1. Create a new folder in `lang/` with the appropriate language tag.
|
||||
2. Add a translated `index.md` to that folder.
|
||||
3. Add a translated `spec/vX.X.X.md` for the latest spec to that folder.
|
||||
4. Ensure all files have the appropriate `title` and `language` front matter (see others as an example).
|
||||
5. Add the language to the `_config.yml` file.
|
||||
|
||||
## Thank you semver.org
|
||||
|
||||
We used [semver.org](https://github.com/mojombo/semver.org) as a blueprint for
|
||||
both the website and structure of this specification.
|
@ -1,35 +0,0 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
|
||||
|
||||
Blueprint CSS Framework 0.9
|
||||
http://blueprintcss.org
|
||||
|
||||
* Copyright (c) 2007-Present. See LICENSE for more info.
|
||||
* See README for instructions on how to use Blueprint.
|
||||
* For credits and origins, see AUTHORS.
|
||||
* This is a compressed file. See the sources in the 'src' directory.
|
||||
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
/* ie.css */
|
||||
body {text-align:center;}
|
||||
.container {text-align:left;}
|
||||
* html .column, * html div.span-1, * html div.span-2, * html div.span-3, * html div.span-4, * html div.span-5, * html div.span-6, * html div.span-7, * html div.span-8, * html div.span-9, * html div.span-10, * html div.span-11, * html div.span-12, * html div.span-13, * html div.span-14, * html div.span-15, * html div.span-16, * html div.span-17, * html div.span-18, * html div.span-19, * html div.span-20, * html div.span-21, * html div.span-22, * html div.span-23, * html div.span-24 {display:inline;overflow-x:hidden;}
|
||||
* html legend {margin:0px -8px 16px 0;padding:0;}
|
||||
sup {vertical-align:text-top;}
|
||||
sub {vertical-align:text-bottom;}
|
||||
html>body p code {*white-space:normal;}
|
||||
hr {margin:-8px auto 11px;}
|
||||
img {-ms-interpolation-mode:bicubic;}
|
||||
.clearfix, .container {display:inline-block;}
|
||||
* html .clearfix, * html .container {height:1%;}
|
||||
fieldset {padding-top:0;}
|
||||
textarea {overflow:auto;}
|
||||
input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;}
|
||||
input.text:focus, input.title:focus {border-color:#666;}
|
||||
input.text, input.title, textarea, select {margin:0.5em 0;}
|
||||
input.checkbox, input.radio {position:relative;top:.25em;}
|
||||
form.inline div, form.inline p {vertical-align:middle;}
|
||||
form.inline label {position:relative;top:-0.25em;}
|
||||
form.inline input.checkbox, form.inline input.radio, form.inline input.button, form.inline button {margin:0.5em 0;}
|
||||
button, input.button {position:relative;top:0.25em;}
|
@ -1,29 +0,0 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
|
||||
|
||||
Blueprint CSS Framework 0.9
|
||||
http://blueprintcss.org
|
||||
|
||||
* Copyright (c) 2007-Present. See LICENSE for more info.
|
||||
* See README for instructions on how to use Blueprint.
|
||||
* For credits and origins, see AUTHORS.
|
||||
* This is a compressed file. See the sources in the 'src' directory.
|
||||
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
/* print.css */
|
||||
body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;}
|
||||
.container {background:none;}
|
||||
hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;}
|
||||
hr.space {background:#fff;color:#fff;visibility:hidden;}
|
||||
h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;}
|
||||
code {font:.9em "Courier New", Monaco, Courier, monospace;}
|
||||
a img {border:none;}
|
||||
p img.top {margin-top:0;}
|
||||
blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;}
|
||||
.small {font-size:.9em;}
|
||||
.large {font-size:1.1em;}
|
||||
.quiet {color:#999;}
|
||||
.hide {display:none;}
|
||||
a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;}
|
||||
a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;}
|
@ -1,257 +0,0 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
|
||||
|
||||
Blueprint CSS Framework 0.9
|
||||
http://blueprintcss.org
|
||||
|
||||
* Copyright (c) 2007-Present. See LICENSE for more info.
|
||||
* See README for instructions on how to use Blueprint.
|
||||
* For credits and origins, see AUTHORS.
|
||||
* This is a compressed file. See the sources in the 'src' directory.
|
||||
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
/* reset.css */
|
||||
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
|
||||
body {line-height:1.5;}
|
||||
table {border-collapse:separate;border-spacing:0;}
|
||||
caption, th, td {text-align:left;font-weight:normal;}
|
||||
table, td, th {vertical-align:middle;}
|
||||
blockquote:before, blockquote:after, q:before, q:after {content:"";}
|
||||
blockquote, q {quotes:"" "";}
|
||||
a img {border:none;}
|
||||
|
||||
/* typography.css */
|
||||
html {font-size:100.01%;}
|
||||
body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
|
||||
h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
|
||||
h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
|
||||
h2 {font-size:2em;margin-bottom:0.75em;}
|
||||
h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
|
||||
h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
|
||||
h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
|
||||
h6 {font-size:1em;font-weight:bold;}
|
||||
h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
|
||||
p {margin:0 0 1.5em;}
|
||||
p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
|
||||
p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
|
||||
a:focus, a:hover {color:#000;}
|
||||
a {color:#009;text-decoration:underline;}
|
||||
blockquote {margin:1.5em;color:#666;font-style:italic;}
|
||||
strong {font-weight:bold;}
|
||||
em, dfn {font-style:italic;}
|
||||
dfn {font-weight:bold;}
|
||||
sup, sub {line-height:0;}
|
||||
abbr, acronym {border-bottom:1px dotted #666;}
|
||||
address {margin:0 0 1.5em;font-style:italic;}
|
||||
del {color:#666;}
|
||||
pre {margin:1.5em 0;white-space:pre;}
|
||||
pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
|
||||
li ul, li ol {margin:0;}
|
||||
ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;}
|
||||
ul {list-style-type:disc;}
|
||||
ol {list-style-type:decimal;}
|
||||
dl {margin:0 0 1.5em 0;}
|
||||
dl dt {font-weight:bold;}
|
||||
dd {margin-left:1.5em;}
|
||||
table {margin-bottom:1.4em;width:100%;}
|
||||
th {font-weight:bold;}
|
||||
thead th {background:#c3d9ff;}
|
||||
th, td, caption {padding:4px 10px 4px 5px;}
|
||||
tr.even td {background:#e5ecf9;}
|
||||
tfoot {font-style:italic;}
|
||||
caption {background:#eee;}
|
||||
.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
|
||||
.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
|
||||
.hide {display:none;}
|
||||
.quiet {color:#666;}
|
||||
.loud {color:#000;}
|
||||
.highlight {background:#ff0;}
|
||||
.added {background:#060;color:#fff;}
|
||||
.removed {background:#900;color:#fff;}
|
||||
.first {margin-left:0;padding-left:0;}
|
||||
.last {margin-right:0;padding-right:0;}
|
||||
.top {margin-top:0;padding-top:0;}
|
||||
.bottom {margin-bottom:0;padding-bottom:0;}
|
||||
|
||||
/* forms.css */
|
||||
label {font-weight:bold;}
|
||||
fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
|
||||
legend {font-weight:bold;font-size:1.2em;}
|
||||
input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;}
|
||||
input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;}
|
||||
input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;}
|
||||
input.text, input.title {width:300px;padding:5px;}
|
||||
input.title {font-size:1.5em;}
|
||||
textarea {width:390px;height:250px;padding:5px;}
|
||||
input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;}
|
||||
form.inline {line-height:3;}
|
||||
form.inline p {margin-bottom:0;}
|
||||
.error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
|
||||
.error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
|
||||
.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
|
||||
.success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
|
||||
.error a {color:#8a1f11;}
|
||||
.notice a {color:#514721;}
|
||||
.success a {color:#264409;}
|
||||
|
||||
/* grid.css */
|
||||
.container {width:950px;margin:0 auto;}
|
||||
.showgrid {background:url(src/grid.png);}
|
||||
.column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20, div.span-21, div.span-22, div.span-23, div.span-24 {float:left;margin-right:10px;}
|
||||
.last, div.last {margin-right:0;}
|
||||
.span-1 {width:30px;}
|
||||
.span-2 {width:70px;}
|
||||
.span-3 {width:110px;}
|
||||
.span-4 {width:150px;}
|
||||
.span-5 {width:190px;}
|
||||
.span-6 {width:230px;}
|
||||
.span-7 {width:270px;}
|
||||
.span-8 {width:310px;}
|
||||
.span-9 {width:350px;}
|
||||
.span-10 {width:390px;}
|
||||
.span-11 {width:430px;}
|
||||
.span-12 {width:470px;}
|
||||
.span-13 {width:510px;}
|
||||
.span-14 {width:550px;}
|
||||
.span-15 {width:590px;}
|
||||
.span-16 {width:630px;}
|
||||
.span-17 {width:670px;}
|
||||
.span-18 {width:710px;}
|
||||
.span-19 {width:750px;}
|
||||
.span-20 {width:790px;}
|
||||
.span-21 {width:830px;}
|
||||
.span-22 {width:870px;}
|
||||
.span-23 {width:910px;}
|
||||
.span-24, div.span-24 {width:950px;margin-right:0;}
|
||||
input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;}
|
||||
input.span-1, textarea.span-1 {width:18px!important;}
|
||||
input.span-2, textarea.span-2 {width:58px!important;}
|
||||
input.span-3, textarea.span-3 {width:98px!important;}
|
||||
input.span-4, textarea.span-4 {width:138px!important;}
|
||||
input.span-5, textarea.span-5 {width:178px!important;}
|
||||
input.span-6, textarea.span-6 {width:218px!important;}
|
||||
input.span-7, textarea.span-7 {width:258px!important;}
|
||||
input.span-8, textarea.span-8 {width:298px!important;}
|
||||
input.span-9, textarea.span-9 {width:338px!important;}
|
||||
input.span-10, textarea.span-10 {width:378px!important;}
|
||||
input.span-11, textarea.span-11 {width:418px!important;}
|
||||
input.span-12, textarea.span-12 {width:458px!important;}
|
||||
input.span-13, textarea.span-13 {width:498px!important;}
|
||||
input.span-14, textarea.span-14 {width:538px!important;}
|
||||
input.span-15, textarea.span-15 {width:578px!important;}
|
||||
input.span-16, textarea.span-16 {width:618px!important;}
|
||||
input.span-17, textarea.span-17 {width:658px!important;}
|
||||
input.span-18, textarea.span-18 {width:698px!important;}
|
||||
input.span-19, textarea.span-19 {width:738px!important;}
|
||||
input.span-20, textarea.span-20 {width:778px!important;}
|
||||
input.span-21, textarea.span-21 {width:818px!important;}
|
||||
input.span-22, textarea.span-22 {width:858px!important;}
|
||||
input.span-23, textarea.span-23 {width:898px!important;}
|
||||
input.span-24, textarea.span-24 {width:938px!important;}
|
||||
.append-1 {padding-right:40px;}
|
||||
.append-2 {padding-right:80px;}
|
||||
.append-3 {padding-right:120px;}
|
||||
.append-4 {padding-right:160px;}
|
||||
.append-5 {padding-right:200px;}
|
||||
.append-6 {padding-right:240px;}
|
||||
.append-7 {padding-right:280px;}
|
||||
.append-8 {padding-right:320px;}
|
||||
.append-9 {padding-right:360px;}
|
||||
.append-10 {padding-right:400px;}
|
||||
.append-11 {padding-right:440px;}
|
||||
.append-12 {padding-right:480px;}
|
||||
.append-13 {padding-right:520px;}
|
||||
.append-14 {padding-right:560px;}
|
||||
.append-15 {padding-right:600px;}
|
||||
.append-16 {padding-right:640px;}
|
||||
.append-17 {padding-right:680px;}
|
||||
.append-18 {padding-right:720px;}
|
||||
.append-19 {padding-right:760px;}
|
||||
.append-20 {padding-right:800px;}
|
||||
.append-21 {padding-right:840px;}
|
||||
.append-22 {padding-right:880px;}
|
||||
.append-23 {padding-right:920px;}
|
||||
.prepend-1 {padding-left:40px;}
|
||||
.prepend-2 {padding-left:80px;}
|
||||
.prepend-3 {padding-left:120px;}
|
||||
.prepend-4 {padding-left:160px;}
|
||||
.prepend-5 {padding-left:200px;}
|
||||
.prepend-6 {padding-left:240px;}
|
||||
.prepend-7 {padding-left:280px;}
|
||||
.prepend-8 {padding-left:320px;}
|
||||
.prepend-9 {padding-left:360px;}
|
||||
.prepend-10 {padding-left:400px;}
|
||||
.prepend-11 {padding-left:440px;}
|
||||
.prepend-12 {padding-left:480px;}
|
||||
.prepend-13 {padding-left:520px;}
|
||||
.prepend-14 {padding-left:560px;}
|
||||
.prepend-15 {padding-left:600px;}
|
||||
.prepend-16 {padding-left:640px;}
|
||||
.prepend-17 {padding-left:680px;}
|
||||
.prepend-18 {padding-left:720px;}
|
||||
.prepend-19 {padding-left:760px;}
|
||||
.prepend-20 {padding-left:800px;}
|
||||
.prepend-21 {padding-left:840px;}
|
||||
.prepend-22 {padding-left:880px;}
|
||||
.prepend-23 {padding-left:920px;}
|
||||
div.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;}
|
||||
div.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;}
|
||||
.pull-1 {margin-left:-40px;}
|
||||
.pull-2 {margin-left:-80px;}
|
||||
.pull-3 {margin-left:-120px;}
|
||||
.pull-4 {margin-left:-160px;}
|
||||
.pull-5 {margin-left:-200px;}
|
||||
.pull-6 {margin-left:-240px;}
|
||||
.pull-7 {margin-left:-280px;}
|
||||
.pull-8 {margin-left:-320px;}
|
||||
.pull-9 {margin-left:-360px;}
|
||||
.pull-10 {margin-left:-400px;}
|
||||
.pull-11 {margin-left:-440px;}
|
||||
.pull-12 {margin-left:-480px;}
|
||||
.pull-13 {margin-left:-520px;}
|
||||
.pull-14 {margin-left:-560px;}
|
||||
.pull-15 {margin-left:-600px;}
|
||||
.pull-16 {margin-left:-640px;}
|
||||
.pull-17 {margin-left:-680px;}
|
||||
.pull-18 {margin-left:-720px;}
|
||||
.pull-19 {margin-left:-760px;}
|
||||
.pull-20 {margin-left:-800px;}
|
||||
.pull-21 {margin-left:-840px;}
|
||||
.pull-22 {margin-left:-880px;}
|
||||
.pull-23 {margin-left:-920px;}
|
||||
.pull-24 {margin-left:-960px;}
|
||||
.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;}
|
||||
.push-1 {margin:0 -40px 1.5em 40px;}
|
||||
.push-2 {margin:0 -80px 1.5em 80px;}
|
||||
.push-3 {margin:0 -120px 1.5em 120px;}
|
||||
.push-4 {margin:0 -160px 1.5em 160px;}
|
||||
.push-5 {margin:0 -200px 1.5em 200px;}
|
||||
.push-6 {margin:0 -240px 1.5em 240px;}
|
||||
.push-7 {margin:0 -280px 1.5em 280px;}
|
||||
.push-8 {margin:0 -320px 1.5em 320px;}
|
||||
.push-9 {margin:0 -360px 1.5em 360px;}
|
||||
.push-10 {margin:0 -400px 1.5em 400px;}
|
||||
.push-11 {margin:0 -440px 1.5em 440px;}
|
||||
.push-12 {margin:0 -480px 1.5em 480px;}
|
||||
.push-13 {margin:0 -520px 1.5em 520px;}
|
||||
.push-14 {margin:0 -560px 1.5em 560px;}
|
||||
.push-15 {margin:0 -600px 1.5em 600px;}
|
||||
.push-16 {margin:0 -640px 1.5em 640px;}
|
||||
.push-17 {margin:0 -680px 1.5em 680px;}
|
||||
.push-18 {margin:0 -720px 1.5em 720px;}
|
||||
.push-19 {margin:0 -760px 1.5em 760px;}
|
||||
.push-20 {margin:0 -800px 1.5em 800px;}
|
||||
.push-21 {margin:0 -840px 1.5em 840px;}
|
||||
.push-22 {margin:0 -880px 1.5em 880px;}
|
||||
.push-23 {margin:0 -920px 1.5em 920px;}
|
||||
.push-24 {margin:0 -960px 1.5em 960px;}
|
||||
.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:right;position:relative;}
|
||||
.prepend-top {margin-top:1.5em;}
|
||||
.append-bottom {margin-bottom:1.5em;}
|
||||
.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
|
||||
hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
|
||||
hr.space {background:#fff;color:#fff;visibility:hidden;}
|
||||
.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
|
||||
.clearfix, .container {display:block;}
|
||||
.clear {clear:both;}
|
@ -1,30 +0,0 @@
|
||||
@import url(http://fonts.googleapis.com/earlyaccess/droidarabickufi.css);
|
||||
@import url(http://fonts.googleapis.com/earlyaccess/droidarabicnaskh.css);
|
||||
@import url(http://fonts.googleapis.com/earlyaccess/thabit.css);
|
||||
|
||||
|
||||
html {
|
||||
font-family: 'Droid Arabic Naskh', tahoma, Helvetica, Arial, sans-serif;
|
||||
line-height: 1.8em;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: 'Droid Arabic Kufi', Arial, sans-serif;
|
||||
}
|
||||
|
||||
h3 {
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
code {
|
||||
direction: ltr !important;
|
||||
background-color: #ecf0f1;
|
||||
padding: 5px;
|
||||
font-family: 'Thabit', 'Courier New', serif;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: justify;
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
html { font-size: 16px; }
|
||||
|
||||
h1, h2, h3 { font-family: "Microsoft YaHei", "Heiti TC", "Heiti SC"; }
|
@ -1,3 +0,0 @@
|
||||
html { font-size: 16px; }
|
||||
|
||||
h1, h2, h3 { font-family: "Microsoft JhengHei", "Microsoft YaHei", "Heiti TC", "Heiti SC"; }
|
@ -1,95 +0,0 @@
|
||||
/*
|
||||
CSS for semver.org
|
||||
@author Mathias Bynens
|
||||
@link http://mathiasbynens.be/
|
||||
*/
|
||||
|
||||
h1, h2, ol { margin: 0; padding: 0; }
|
||||
|
||||
html { font: 14.4px/1.5 Helvetica, Arial, sans-serif; }
|
||||
body { margin: 0 auto; padding: 0 10%; max-width: 710px; }
|
||||
|
||||
@-ms-viewport { width: device-width; }
|
||||
html { -webkit-text-size-adjust: 100%; }
|
||||
|
||||
h1, h2, h3 { text-align: center; font-weight: normal; }
|
||||
h1 { font-size: 43px; margin: 1.1em 0 .7em; }
|
||||
h2 { margin: 2.1em 0 .7em; font-size: 24px; }
|
||||
h3 { text-align: left; font-size: 15.8px; margin-bottom: .6em; }
|
||||
|
||||
a { color: #009; }
|
||||
a:hover, a:focus { color: #000; }
|
||||
ol { padding-left: 1.5em; }
|
||||
p { margin: 0 0 1em; }
|
||||
|
||||
@media print {
|
||||
body { width: 100%; }
|
||||
h1, h2, h3 { font-weight: bold; }
|
||||
a:after { content: ' <' attr(href) '>'; font-size: 90%; }
|
||||
}
|
||||
|
||||
/* Nav */
|
||||
|
||||
ol.nav {
|
||||
background-color: #333;
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
ol.nav li {
|
||||
display: inline;
|
||||
font-weight: bold;
|
||||
margin-right: 20px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
ol.nav li a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
ol.lang {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
ol.lang li a {
|
||||
color: black;
|
||||
}
|
||||
|
||||
/* Anchor Link styling */
|
||||
|
||||
#spec a.anchor-link {
|
||||
opacity: 0;
|
||||
/* Got this background image from an AnchorJs example http://bryanbraun.github.io/anchorjs/ */
|
||||
background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjIwcHgiIGhlaWdodD0iMTBweCIgdmlld0JveD0iMCAwIDIwIDEwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImxpbmsiIGZpbGw9IiNGRjUyMzEiPgogICAgICAgICAgICA8cGF0aCBkPSJNMTUsMCBMMTIuMzA0Njg3NSwwIEMxMy4yNDIxODc1LDAuNjI1IDE0LjEyMTA5MzgsMS43MzgyODEyNSAxNC4zOTQ1MzEyLDIuNSBMMTQuOTgwNDY4OCwyLjUgQzE2LjI1LDIuNSAxNy40ODA0Njg4LDMuNzUgMTcuNDgwNDY4OCw1IEMxNy40ODA0Njg4LDYuMjUgMTYuMjEwOTM3NSw3LjUgMTQuOTgwNDY4OCw3LjUgTDExLjIzMDQ2ODgsNy41IEMxMCw3LjUgOC43MzA0Njg3NSw2LjI1IDguNzMwNDY4NzUsNSBDOC43MzA0Njg3NSw0LjU1MDc4MTI1IDguODY3MTg3NSw0LjEyMTA5Mzc1IDkuMDgyMDMxMjUsMy43NSBMNi40MDYyNSwzLjc1IEM2LjMwODU5Mzc1LDQuMTYwMTU2MjUgNi4yNSw0LjU3MDMxMjUgNi4yNSw1IEM2LjI1LDcuNSA4LjczMDQ2ODc1LDEwIDExLjIzMDQ2ODgsMTAgTDE1LDEwIEMxNy41LDEwIDIwLDcuNSAyMCw1IEMyMCwyLjUgMTcuNSwwIDE1LDAgTDE1LDAgWiBNNS42MDU0Njg3NSw3LjUgTDUuMDE5NTMxMjUsNy41IEMzLjc1LDcuNSAyLjUxOTUzMTI1LDYuMjUgMi41MTk1MzEyNSw1IEMyLjUxOTUzMTI1LDMuNzUgMy43ODkwNjI1LDIuNSA1LjAxOTUzMTI1LDIuNSBMOC43Njk1MzEyNSwyLjUgQzEwLDIuNSAxMS4yNjk1MzEyLDMuNzUgMTEuMjY5NTMxMiw1IEMxMS4yNjk1MzEyLDUuNDQ5MjE4NzUgMTEuMTMyODEyNSw1Ljg3ODkwNjI1IDEwLjkxNzk2ODgsNi4yNSBMMTMuNTkzNzUsNi4yNSBDMTMuNjkxNDA2Miw1LjgzOTg0Mzc1IDEzLjc1LDUuNDI5Njg3NSAxMy43NSw1IEMxMy43NSwyLjUgMTEuMjY5NTMxMiwwIDguNzY5NTMxMjUsMCBMNSwwIEMyLjUsMCAwLDIuNSAwLDUgQzAsNy41IDIuNSwxMCA1LDEwIEw3LjY5NTMxMjUsMTAgQzYuNzU3ODEyNSw5LjM3NSA1Ljg3ODkwNjI1LDguMjYxNzE4NzUgNS42MDU0Njg3NSw3LjUgTDUuNjA1NDY4NzUsNy41IFoiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+") no-repeat;
|
||||
position: absolute;
|
||||
margin-top: 0.5em;
|
||||
margin-left: -1em;
|
||||
padding-right: 0.5em;
|
||||
height: 16px;
|
||||
width: 20px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#spec h1 a.anchor-link {
|
||||
margin-left: -0.6em;
|
||||
}
|
||||
|
||||
#spec h3 a.anchor-link {
|
||||
margin-left: -1.5em;
|
||||
margin-top: 0.4em;
|
||||
}
|
||||
|
||||
#spec li a.anchor-link {
|
||||
margin-top: 0.4em;
|
||||
margin-left: -3em;
|
||||
}
|
||||
|
||||
#spec [id] {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#spec [id]:hover > .anchor-link, .anchor-link:focus {
|
||||
opacity: 1;
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
html {
|
||||
font-size: 120%;
|
||||
line-height: 1.75em;
|
||||
}
|
||||
|
||||
.container {
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
width: 710px;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1em;
|
||||
margin-bottom: .75em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 300%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 2em;
|
||||
font-size: 170%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
border: 1px solid #ddd;
|
||||
padding: .25em .25em;
|
||||
background-color: #eef;
|
||||
}
|
||||
|
||||
code {
|
||||
border: 1px solid #ddd;
|
||||
padding: 0 .2em;
|
||||
background-color: #eef;
|
||||
}
|
||||
|
||||
pre code {
|
||||
border: none;
|
||||
}
|
||||
|
||||
ol {
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: .25em 1em .25em 0;
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
.highlight { background: #ffffff; }
|
||||
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
.highlight .k { font-weight: bold } /* Keyword */
|
||||
.highlight .o { font-weight: bold } /* Operator */
|
||||
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
|
||||
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #009999 } /* Literal.Number */
|
||||
.highlight .s { color: #d14 } /* Literal.String */
|
||||
.highlight .na { color: #008080 } /* Name.Attribute */
|
||||
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
||||
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #008080 } /* Name.Constant */
|
||||
.highlight .ni { color: #800080 } /* Name.Entity */
|
||||
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||
.highlight .nn { color: #555555 } /* Name.Namespace */
|
||||
.highlight .nt { color: #000080 } /* Name.Tag */
|
||||
.highlight .nv { color: #008080 } /* Name.Variable */
|
||||
.highlight .ow { font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
||||
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
214
_site/index.html
214
_site/index.html
@ -1,214 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
|
||||
<!-- Begin Jekyll SEO tag v2.1.0 -->
|
||||
<title>Conventional Commits 1.0.0-beta - Conventional Commits</title>
|
||||
<meta property="og:title" content="Conventional Commits 1.0.0-beta" />
|
||||
<link rel="canonical" href="http://localhost:4000/" />
|
||||
<meta property="og:url" content="http://localhost:4000/" />
|
||||
<meta property="og:site_name" content="Conventional Commits" />
|
||||
<script type="application/ld+json">
|
||||
{"@context": "http://schema.org",
|
||||
"@type": "WebSite",
|
||||
"name": "Conventional Commits",
|
||||
"headline": "Conventional Commits 1.0.0-beta",
|
||||
"url": "http://localhost:4000/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<ol class="nav lang" dir="ltr">
|
||||
|
||||
|
||||
<li class="language language-en">
|
||||
<a rel="alternate" lang="en" hreflang="en"
|
||||
href="/lang/en">
|
||||
english (en)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
<ol class="nav">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="version version-1.0.0-beta">
|
||||
<a href="/spec/v1.0.0-beta.html">
|
||||
1.0.0-beta
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ol>
|
||||
<div id="spec">
|
||||
<h1 id="conventional-commits-100-beta">Conventional Commits 1.0.0-beta</h1>
|
||||
|
||||
<h2 id="summary">Summary</h2>
|
||||
|
||||
<p>As an open-source maintainer, squash feature branches onto <code class="highlighter-rouge">master</code> and write
|
||||
a standardized commit message while doing so.</p>
|
||||
|
||||
<p>The commit message should be structured as follows:</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="highlighter-rouge"><pre class="highlight"><code><type>[optional scope]: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer]
|
||||
</code></pre>
|
||||
</div>
|
||||
<hr />
|
||||
|
||||
<p><br />
|
||||
The commit contains the following structural elements, to communicate intent to the
|
||||
consumers of your library:</p>
|
||||
|
||||
<ol>
|
||||
<li><strong>fix:</strong> a commit of the <em>type</em> <code class="highlighter-rouge">fix</code> patches a bug in your codebase (this correlates with <a href="http://semver.org/#summary"><code class="highlighter-rouge">PATCH</code></a> in semantic versioning).</li>
|
||||
<li><strong>feat:</strong> a commit of the <em>type</em> <code class="highlighter-rouge">feat</code> introduces a new feature to the codebase (this correlates
|
||||
with <a href="http://semver.org/#summary"><code class="highlighter-rouge">MINOR</code></a> in semantic versioning).</li>
|
||||
<li><strong>BREAKING CHANGE:</strong> a commit that has the text <code class="highlighter-rouge">BREAKING CHANGE:</code> at the beginning of its optional body or footer section introduces a breaking API change (correlating with <a href="http://semver.org/#summary"><code class="highlighter-rouge">Major</code></a> in semantic versioning). A breaking change can be
|
||||
part of either a <code class="highlighter-rouge">fix:</code> or <code class="highlighter-rouge">feat:</code> <em>type</em> commit.</li>
|
||||
</ol>
|
||||
|
||||
<p><br />
|
||||
A scope may be provided to a commit’s type, to provide additional contextual information and
|
||||
is contained within parenthesis, e.g., <code class="highlighter-rouge">feat(parser): adds ability to parse arrays</code>.</p>
|
||||
|
||||
<p>Commit <em>types</em> other than <code class="highlighter-rouge">fix:</code> and <code class="highlighter-rouge">feat:</code> are allowed, for example <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format">the angular convention</a> recommends <code class="highlighter-rouge">docs:</code>, <code class="highlighter-rouge">style:</code>, <code class="highlighter-rouge">refactor:</code>, <code class="highlighter-rouge">perf:</code>, <code class="highlighter-rouge">test:</code>, <code class="highlighter-rouge">chore:</code>, but these tags are
|
||||
not mandated by the conventional commits specification.</p>
|
||||
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
|
||||
<p>In software development, it’s been my experience that bugs are most often introduced
|
||||
at the boundaries between applications. Unit testing works great for testing the interactions
|
||||
that an open-source maintainer knows about, but do a poor job of capturing all the
|
||||
interesting, often unexpected, ways that a community puts a library to use.</p>
|
||||
|
||||
<p>Anyone who has upgraded to a new patch version of a dependency, only to watch their
|
||||
application start throwing a steady stream of 500 errors, knows how important
|
||||
a readable commit history (and <a href="http://keepachangelog.com/en/0.3.0/">ideally a well maintained CHANGLOG</a>) is to the ensuing
|
||||
forensic process.</p>
|
||||
|
||||
<p>The Conventional Commits specification proposes introducing a standardized lightweight
|
||||
convention on top of commit messages. This convention dovetails with <a href="http://semver.org">semver</a>,
|
||||
asking software developers to describe in commit messages, features, fixes, and breaking
|
||||
changes that they make.</p>
|
||||
|
||||
<p>By introducing this convention, we create a common language that makes it easier to
|
||||
debug issues across codebase boundaries.</p>
|
||||
|
||||
<h2 id="conventional-commits-specification">Conventional Commits Specification</h2>
|
||||
|
||||
<p>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>.</p>
|
||||
|
||||
<ol>
|
||||
<li>commits MUST be prefixed with a type, which consists of a verb, <code class="highlighter-rouge">feat</code>, <code class="highlighter-rouge">fix</code>, etc.,
|
||||
followed by a colon and a space.</li>
|
||||
<li>the type <code class="highlighter-rouge">feat</code> MUST be used when a commit adds a new feature to your application
|
||||
or library.</li>
|
||||
<li>the type <code class="highlighter-rouge">fix</code> MUST be used when a commit represents a bug fix for your application.</li>
|
||||
<li>an optional scope MAY be provided after a type. A scope is a phrase describing
|
||||
a component of the codebase, enclosed in parenthesis, e.g., <code class="highlighter-rouge">fix(parser):</code></li>
|
||||
<li>A description MUST immediately follow the type and optional scope.
|
||||
The description is a short description of the pull request, e.g.,
|
||||
<em>fix: array parsing issue when multiple spaces were contained in string.</em></li>
|
||||
<li>A longer commit body MAY be provided after the short description. The body MUST
|
||||
begin one blank line after the description.</li>
|
||||
<li>A footer MAY be provided one blank line after the body. The footer SHOULD contain
|
||||
additional meta-information about the pull-request, such as the issues it fixes.</li>
|
||||
<li>Breaking changes MUST be indicated at the very beginning of the footer or body section of a commit. A breaking change MUST consist of the uppercase text <code class="highlighter-rouge">BREAKING CHANGE</code>, followed by a colon and a space. A short
|
||||
description MUST be provided after <code class="highlighter-rouge">BREAKING CHANGE: </code>, describing why the change is
|
||||
breaking, e.g., <em>BREAKING CHANGE: I must now leave Earth for no raisin!</em></li>
|
||||
<li>types other than <code class="highlighter-rouge">feat</code> and <code class="highlighter-rouge">fix</code> MAY be used in your commit messages.</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="why-use-conventional-commits">Why Use Conventional Commits</h2>
|
||||
|
||||
<ul>
|
||||
<li>Automatically generating CHANGELOGs.</li>
|
||||
<li>Automatically determining a semantic version bump (based on the types of commits landed).</li>
|
||||
<li>Communicating the nature of changes to teammates, the public, and other stakeholders quickly.</li>
|
||||
<li>Triggering build and publish processes.</li>
|
||||
<li>Helping organize and analyze the nature of your own changes in a more productive fashion.</li>
|
||||
<li>Making it easier for people to contribute to your projects, by allowing them to explore
|
||||
a more structured commit history.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="faq">FAQ</h2>
|
||||
|
||||
<h3 id="how-should-i-deal-with-commit-messages-in-the-initial-development-phase">How should I deal with commit messages in the initial development phase?</h3>
|
||||
|
||||
<p>We recommend that you proceed as if you’ve an already released product. Typically <em>somebody</em>, even if its your fellow software developers, is using your software. They’ll want to know what’s fixed, what breaks etc.</p>
|
||||
|
||||
<h3 id="what-do-i-do-if-the-commit-conforms-to-more-than-one-of-the-commit-types">What do I do if the commit conforms to more than one of the commit types?</h3>
|
||||
|
||||
<p>Go back and make multiple commits whenever possible. Part of the beautify of Conventional Commits is its ability to drive us to make more organized commits and PRs.</p>
|
||||
|
||||
<h3 id="doesnt-this-discourage-rapid-development-and-fast-iteration">Doesn’t this discourage rapid development and fast iteration?</h3>
|
||||
|
||||
<p>It discourages moving fast in a disorganized way. It helps you be able to move fast long term and across more projects with more diverse teams.</p>
|
||||
|
||||
<h3 id="might-conventional-commits-lead-developers-to-limit-the-type-of-commits-they-make-because-theyll-be-thinking-in-the-types-provided">Might Conventional Commits lead developers to limit the type of commits they make because they’ll be thinking in the types provided?</h3>
|
||||
|
||||
<p>When used properly, Conventional Commits encourages us to make more of certain types of commits such as fixes. Other than that, the flexibility of Conventional Commits allows your team to come up with their own types and change those types over time.</p>
|
||||
|
||||
<h3 id="how-does-this-relate-to-semver">How does this relate to SemVer?</h3>
|
||||
|
||||
<p><code class="highlighter-rouge">fix</code> type commits should be translated to <code class="highlighter-rouge">PATCH</code> releases. <code class="highlighter-rouge">feat</code> type commits should be translated to <code class="highlighter-rouge">MINOR</code> releases. Commits with <code class="highlighter-rouge">BREAKING CHANGE</code> in the commits, regardless of type, should be translated to <code class="highlighter-rouge">MAJOR</code> releases.</p>
|
||||
|
||||
<h3 id="how-should-i-version-my-commit-type-specification-extensions-eg-jameswomackconventional-commit-spec">How should I version my commit type specification extensions, e.g. <code class="highlighter-rouge">@jameswomack/conventional-commit-spec</code>?</h3>
|
||||
|
||||
<p>We recommend using SemVer and publishing to an NPM-compatible registry.</p>
|
||||
|
||||
<h3 id="what-do-i-do-if-i-accidentally-use-the-wrong-commit-type">What do I do if I accidentally use the wrong commit type?</h3>
|
||||
|
||||
<h4 id="when-you-used-a-type-thats-of-the-spec-but-not-the-correct-type-eg-fix-instead-of-feat">When you used a type that’s of the spec but not the correct type, e.g. <code class="highlighter-rouge">fix</code> instead of <code class="highlighter-rouge">feat</code></h4>
|
||||
|
||||
<p>Prior to merging or releasing the mistake, we recommend using <code class="highlighter-rouge">git rebase -i</code> to edit the commit history. After release, the cleanup will be different according to what tools and processes you use.</p>
|
||||
|
||||
<h4 id="when-you-used-a-type-not-of-the-spec-eg-feet-instead-of-feat">When you used a type <em>not</em> of the spec, e.g. <code class="highlighter-rouge">feet</code> instead of <code class="highlighter-rouge">feat</code></h4>
|
||||
|
||||
<p>In a worst case scenario, it’s not the end of the world if a commit lands that does not meet the conventional commit specification. It simply means that commit will be missed by tools that are based on the standard.</p>
|
||||
|
||||
<h3 id="do-all-my-contributors-need-to-use-the-conventional-commit-specification">Do all my contributors need to use the conventional commit specification?</h3>
|
||||
|
||||
<p>No! If you use a squash based workflow on Git lead maintainers can cleanup the commit messages as they’re merged—adding no workload to casual committers. A common workflow for this is to have your git system automatically squash commits from a pull request and present a form for the lead maintainer to enter the proper git commit message for the merge.</p>
|
||||
|
||||
<h2 id="whos-behind-thisinspired-this">Who’s Behind This/Inspired This?</h2>
|
||||
|
||||
<p>The Conventional Commit standard is inspired by the <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit">Angular Commit Guidelines</a>, which
|
||||
I was introduced to by the wondeful folks behind <a href="https://github.com/semantic-release/semantic-release">semantic-release</a> (a tool
|
||||
that fully automates npm publishes).</p>
|
||||
|
||||
<p>The first draft of this specification has been written in collaboration with some of the
|
||||
folks contributing to:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://github.com/conventional-changelog/standard-version">standard-version</a>: a tool
|
||||
for managing CHANGELOG generation, tagging, and version bumping, based on the
|
||||
Conventional Commit standard.</li>
|
||||
<li><a href="https://www.npmjs.com/package/unleash">unleash</a>: a tool for automating the
|
||||
software release and publishing lifecycle.</li>
|
||||
<li><a href="https://github.com/lerna/lerna">lerna</a>: a tool for managing monorepos, which grew out
|
||||
of the Babel project.</li>
|
||||
<li><a href="https://github.com/conventional-changelog/conventional-changelog">conventional-changelog</a>: a
|
||||
set of tools for parsing conventional commit messages from git histories.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="license">License</h2>
|
||||
|
||||
<p><a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons - CC BY 3.0</a></p>
|
||||
|
||||
</div>
|
||||
<script src="/js/anchorli.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,29 +0,0 @@
|
||||
document.onreadystatechange = function () {
|
||||
if (this.readyState === "complete") {
|
||||
|
||||
var createAnchorLink = function (id) {
|
||||
var anchor = document.createElement("a");
|
||||
anchor.className = "anchor-link";
|
||||
anchor.href = "#" + id;
|
||||
return anchor;
|
||||
};
|
||||
|
||||
// Add IDs to all spec li elements
|
||||
var specItems = document.querySelectorAll("#spec ol")[1]
|
||||
.querySelectorAll('li');
|
||||
for (var i = 0; i < specItems.length; i++)
|
||||
{
|
||||
var li = specItems[i];
|
||||
li.id = 'spec-item-' + (i + 1);
|
||||
}
|
||||
|
||||
// Add anchor link to all elemens with an ID in the spec
|
||||
var headers = document.querySelectorAll('#spec [id]');
|
||||
for (var i = 0; i < headers.length; i++)
|
||||
{
|
||||
var element = headers[i];
|
||||
var anchorLink = createAnchorLink(element.id);
|
||||
element.insertBefore(anchorLink, element.firstChild)
|
||||
}
|
||||
}
|
||||
};
|
@ -1,10 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US">
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting…</title>
|
||||
<link rel="canonical" href="http://localhost:4000/">
|
||||
<meta http-equiv="refresh" content="0; url=http://localhost:4000/">
|
||||
<h1>Redirecting…</h1>
|
||||
<a href="http://localhost:4000/">Click here if you are not redirected.</a>
|
||||
<script>location="http://localhost:4000/"</script>
|
||||
</html>
|
@ -1,201 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="es" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
|
||||
<!-- Begin Jekyll SEO tag v2.1.0 -->
|
||||
<title>Conventional Commits 1.0.0-beta - Conventional Commits</title>
|
||||
<meta property="og:title" content="Conventional Commits 1.0.0-beta" />
|
||||
<link rel="canonical" href="http://localhost:4000/lang/es/" />
|
||||
<meta property="og:url" content="http://localhost:4000/lang/es/" />
|
||||
<meta property="og:site_name" content="Conventional Commits" />
|
||||
<script type="application/ld+json">
|
||||
{"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"headline": "Conventional Commits 1.0.0-beta",
|
||||
"url": "http://localhost:4000/lang/es/"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<ol class="nav lang" dir="ltr">
|
||||
|
||||
|
||||
<li class="language language-en">
|
||||
<a rel="alternate" lang="en" hreflang="en"
|
||||
href="/lang/en">
|
||||
english (en)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
<ol class="nav">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="version version-1.0.0-beta">
|
||||
<a href="/lang/es/spec/v1.0.0-beta.html">
|
||||
1.0.0-beta
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ol>
|
||||
<div id="spec">
|
||||
<h1 id="conventional-commits-100-beta">Conventional Commits 1.0.0-beta</h1>
|
||||
|
||||
<h2 id="summary">Summary</h2>
|
||||
|
||||
<p>As an open-source maintainer, squash feature branches onto <code class="highlighter-rouge">master</code> and write
|
||||
a standardized commit message while doing so.</p>
|
||||
|
||||
<p>The commit message should be structured as follows:</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="highlighter-rouge"><pre class="highlight"><code><type>[optional scope]: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer]
|
||||
</code></pre>
|
||||
</div>
|
||||
<hr />
|
||||
|
||||
<p><br />
|
||||
The commit contains the following structural elements, to communicate intent to the
|
||||
consumers of your library:</p>
|
||||
|
||||
<ol>
|
||||
<li><strong>fix:</strong> a commit of the <em>type</em> <code class="highlighter-rouge">fix</code> patches a bug in your codebase (this correlates with <a href="http://semver.org/#summary"><code class="highlighter-rouge">PATCH</code></a> in semantic versioning).</li>
|
||||
<li><strong>feat:</strong> a commit of the <em>type</em> <code class="highlighter-rouge">feat</code> introduces a new feature to the codebase (this correlates
|
||||
with <a href="http://semver.org/#summary"><code class="highlighter-rouge">MINOR</code></a> in semantic versioning).</li>
|
||||
<li><strong>BREAKING CHANGE:</strong> a commit that has the text <code class="highlighter-rouge">BREAKING CHANGE:</code> at the beginning of its optional body or footer section introduces a breaking API change (correlating with <a href="http://semver.org/#summary"><code class="highlighter-rouge">Major</code></a> in semantic versioning). A breaking change can be
|
||||
part of either a <code class="highlighter-rouge">fix:</code> or <code class="highlighter-rouge">feat:</code> <em>type</em> commit.</li>
|
||||
</ol>
|
||||
|
||||
<p><br />
|
||||
A scope may be provided to a commit’s type, to provide additional contextual information and
|
||||
is contained within parenthesis, e.g., <code class="highlighter-rouge">feat(parser): adds ability to parse arrays</code>.</p>
|
||||
|
||||
<p>Commit <em>types</em> other than <code class="highlighter-rouge">fix:</code> and <code class="highlighter-rouge">feat:</code> are allowed, for example <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format">the angular convention</a> recommends <code class="highlighter-rouge">docs:</code>, <code class="highlighter-rouge">style:</code>, <code class="highlighter-rouge">refactor:</code>, <code class="highlighter-rouge">perf:</code>, <code class="highlighter-rouge">test:</code>, <code class="highlighter-rouge">chore:</code>, but these tags are
|
||||
not mandated by the conventional commits specification.</p>
|
||||
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
|
||||
<p>In software development, it’s been my experience that bugs are most often introduced
|
||||
at the boundaries between applications. Unit testing works great for testing the interactions
|
||||
that an open-source maintainer knows about, but do a poor job of capturing all the
|
||||
interesting, often unexpected, ways that a community puts a library to use.</p>
|
||||
|
||||
<p>Anyone who has upgraded to a new patch version of a dependency, only to watch their
|
||||
application start throwing a steady stream of 500 errors, knows how important
|
||||
a readable commit history (and <a href="http://keepachangelog.com/en/0.3.0/">ideally a well maintained CHANGLOG</a>) is to the ensuing
|
||||
forensic process.</p>
|
||||
|
||||
<p>The Conventional Commits specification proposes introducing a standardized lightweight
|
||||
convention on top of commit messages. This convention dovetails with <a href="http://semver.org">semver</a>,
|
||||
asking software developers to describe in commit messages, features, fixes, and breaking
|
||||
changes that they make.</p>
|
||||
|
||||
<p>By introducing this convention, we create a common language that makes it easier to
|
||||
debug issues across codebase boundaries.</p>
|
||||
|
||||
<h2 id="conventional-commits-specification">Conventional Commits Specification</h2>
|
||||
|
||||
<p>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>.</p>
|
||||
|
||||
<ol>
|
||||
<li>commits MUST be prefixed with a type, which consists of a verb, <code class="highlighter-rouge">feat</code>, <code class="highlighter-rouge">fix</code>, etc.,
|
||||
followed by a colon and a space.</li>
|
||||
<li>the type <code class="highlighter-rouge">feat</code> MUST be used when a commit adds a new feature to your application
|
||||
or library.</li>
|
||||
<li>the type <code class="highlighter-rouge">fix</code> MUST be used when a commit represents a bug fix for your application.</li>
|
||||
<li>an optional scope MAY be provided after a type. A scope is a phrase describing
|
||||
a component of the codebase, enclosed in parenthesis, e.g., <code class="highlighter-rouge">fix(parser):</code></li>
|
||||
<li>A description MUST immediately follow the type and optional scope.
|
||||
The description is a short description of the pull request, e.g.,
|
||||
<em>fix: array parsing issue when multiple spaces were contained in string.</em></li>
|
||||
<li>A longer commit body MAY be provided after the short description. The body MUST
|
||||
begin one blank line after the description.</li>
|
||||
<li>A footer MAY be provided one blank line after the body. The footer SHOULD contain
|
||||
additional meta-information about the pull-request, such as the issues it fixes.</li>
|
||||
<li>Breaking changes MUST be indicated at the very beginning of the footer or body section of a commit. A breaking change MUST consist of the uppercase text <code class="highlighter-rouge">BREAKING CHANGE</code>, followed by a colon and a space. A short
|
||||
description MUST be provided after <code class="highlighter-rouge">BREAKING CHANGE: </code>, describing why the change is
|
||||
breaking, e.g., <em>BREAKING CHANGE: I must now leave Earth for no raisin!</em></li>
|
||||
<li>types other than <code class="highlighter-rouge">feat</code> and <code class="highlighter-rouge">fix</code> MAY be used in your commit messages.</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="why-use-conventional-commits">Why Use Conventional Commits</h2>
|
||||
|
||||
<ul>
|
||||
<li>Automatically generating CHANGELOGs.</li>
|
||||
<li>Automatically determining a semantic version bump (based on the types of commits landed).</li>
|
||||
<li>Communicating the nature of changes to teammates, the public, and other stakeholders quickly.</li>
|
||||
<li>Triggering build and publish processes.</li>
|
||||
<li>Helping organize and analyze the nature of your own changes in a more productive fashion.</li>
|
||||
<li>Making it easier for people to contribute to your projects, by allowing them to explore
|
||||
a more structured commit history.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="faq">FAQ</h2>
|
||||
|
||||
<h3 id="how-should-i-deal-with-commit-messages-in-the-initial-development-phase">How should I deal with commit messages in the initial development phase?</h3>
|
||||
|
||||
<p>We recommend that you proceed as if you’ve an already released product. Typically <em>somebody</em>, even if its your fellow software developers, is using your software. They’ll want to know what’s fixed, what breaks etc.</p>
|
||||
|
||||
<h3 id="what-do-i-do-if-the-commit-conforms-to-more-than-one-of-the-commit-types">What do I do if the commit conforms to more than one of the commit types?</h3>
|
||||
|
||||
<p>Go back and make multiple commits whenever possible. Part of the beautify of Conventional Commits is its ability to drive us to make more organized commits and PRs.</p>
|
||||
|
||||
<h3 id="doesnt-this-discourage-rapid-development-and-fast-iteration">Doesn’t this discourage rapid development and fast iteration?</h3>
|
||||
<p>It discourages moving fast in a disorganized way. It helps you be able to move fast long term and across more projects with more diverse teams.</p>
|
||||
|
||||
<h3 id="might-conventional-commits-lead-developers-to-limit-the-type-of-commits-they-make-because-theyll-be-thinking-in-the-types-provided">Might Conventional Commits lead developers to limit the type of commits they make because they’ll be thinking in the types provided?</h3>
|
||||
<p>When used properly, Convential Commits encourages us to make more of certain types of commits such as fixes. Other than that, the flexibility of Conventional Commits allows your team to come up with their own types and change those types over time.</p>
|
||||
|
||||
<h3 id="how-does-this-relate-to-semver">How does this relate to SemVer?</h3>
|
||||
|
||||
<p>we encourage you do use Conventional Commits in conjunction with semantic-versioning. When you publish a version of your library, if you’ve landed only <code class="highlighter-rouge">fix:</code> commits use a patch version, if you’ve landed a feature use a minor release, if you’ve landed a breaking change use a major release.</p>
|
||||
|
||||
<h3 id="what-do-i-do-if-i-accidentally-use-the-wrong-commit-type">What do I do if I accidentally use the wrong commit type?</h3>
|
||||
|
||||
<p>Prior to merging or releasing the mistake, we recommend using <code class="highlighter-rouge">git rebase -i</code> to edit the commit history. After release, the cleanup will be different according to what tools and processes you use.</p>
|
||||
|
||||
<h3 id="do-all-my-contributors-need-to-use-the-conventional-commit-specification">Do all my contributors need to use the conventional commit specification?</h3>
|
||||
|
||||
<p>No, if you use a squash based workflow on Git lead maintainers can cleanup the commit messages as they’re merged – adding no workload to casual committers</p>
|
||||
|
||||
<h2 id="whos-behind-thisinspired-this">Who’s Behind This/Inspired This?</h2>
|
||||
|
||||
<p>The Conventional Commit standard is inspired by the <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit">Angular Commit Guidelines</a>, which
|
||||
I was introduced to by the wondeful folks behind <a href="https://github.com/semantic-release/semantic-release">semantic-release</a> (a tool
|
||||
that fully automates npm publishes).</p>
|
||||
|
||||
<p>The first draft of this specification has been written in collaboration with some of the
|
||||
folks contributing to:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://github.com/conventional-changelog/standard-version">standard-version</a>: a tool
|
||||
for managing CHANGELOG generation, tagging, and version bumping, based on the
|
||||
Conventional Commit standard.</li>
|
||||
<li><a href="https://www.npmjs.com/package/unleash">unlease</a>: a tool for automating the
|
||||
software release and publishing lifecycle.</li>
|
||||
<li><a href="https://github.com/lerna/lerna">lerna</a>: a tool for managing monorepos, which grew out
|
||||
of the Babel project.</li>
|
||||
<li><a href="https://github.com/conventional-changelog/conventional-changelog">conventional-changelog</a>: a
|
||||
set of tools for parsing conventional commit messages from git histories.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="license">License</h2>
|
||||
|
||||
<p><a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons - CC BY 3.0</a></p>
|
||||
|
||||
</div>
|
||||
<script src="/js/anchorli.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,201 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="es" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
|
||||
<!-- Begin Jekyll SEO tag v2.1.0 -->
|
||||
<title>Conventional Commits 1.0.0-beta - Conventional Commits</title>
|
||||
<meta property="og:title" content="Conventional Commits 1.0.0-beta" />
|
||||
<link rel="canonical" href="http://localhost:4000/lang/es/spec/v1.0.0-beta.html" />
|
||||
<meta property="og:url" content="http://localhost:4000/lang/es/spec/v1.0.0-beta.html" />
|
||||
<meta property="og:site_name" content="Conventional Commits" />
|
||||
<script type="application/ld+json">
|
||||
{"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"headline": "Conventional Commits 1.0.0-beta",
|
||||
"url": "http://localhost:4000/lang/es/spec/v1.0.0-beta.html"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<ol class="nav lang" dir="ltr">
|
||||
|
||||
|
||||
<li class="language language-en">
|
||||
<a rel="alternate" lang="en" hreflang="en"
|
||||
href="/lang/en">
|
||||
english (en)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
<ol class="nav">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="version version-1.0.0-beta">
|
||||
<a href="/lang/es/spec/v1.0.0-beta.html">
|
||||
1.0.0-beta
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ol>
|
||||
<div id="spec">
|
||||
<h1 id="conventional-commits-100-beta">Conventional Commits 1.0.0-beta</h1>
|
||||
|
||||
<h2 id="summary">Summary</h2>
|
||||
|
||||
<p>As an open-source maintainer, squash feature branches onto <code class="highlighter-rouge">master</code> and write
|
||||
a standardized commit message while doing so.</p>
|
||||
|
||||
<p>The commit message should be structured as follows:</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="highlighter-rouge"><pre class="highlight"><code><type>[optional scope]: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer]
|
||||
</code></pre>
|
||||
</div>
|
||||
<hr />
|
||||
|
||||
<p><br />
|
||||
The commit contains the following structural elements, to communicate intent to the
|
||||
consumers of your library:</p>
|
||||
|
||||
<ol>
|
||||
<li><strong>fix:</strong> a commit of the <em>type</em> <code class="highlighter-rouge">fix</code> patches a bug in your codebase (this correlates with <a href="http://semver.org/#summary"><code class="highlighter-rouge">PATCH</code></a> in semantic versioning).</li>
|
||||
<li><strong>feat:</strong> a commit of the <em>type</em> <code class="highlighter-rouge">feat</code> introduces a new feature to the codebase (this correlates
|
||||
with <a href="http://semver.org/#summary"><code class="highlighter-rouge">MINOR</code></a> in semantic versioning).</li>
|
||||
<li><strong>BREAKING CHANGE:</strong> a commit that has the text <code class="highlighter-rouge">BREAKING CHANGE:</code> at the beginning of its optional body or footer section introduces a breaking API change (correlating with <a href="http://semver.org/#summary"><code class="highlighter-rouge">Major</code></a> in semantic versioning). A breaking change can be
|
||||
part of either a <code class="highlighter-rouge">fix:</code> or <code class="highlighter-rouge">feat:</code> <em>type</em> commit.</li>
|
||||
</ol>
|
||||
|
||||
<p><br />
|
||||
A scope may be provided to a commit’s type, to provide additional contextual information and
|
||||
is contained within parenthesis, e.g., <code class="highlighter-rouge">feat(parser): adds ability to parse arrays</code>.</p>
|
||||
|
||||
<p>Commit <em>types</em> other than <code class="highlighter-rouge">fix:</code> and <code class="highlighter-rouge">feat:</code> are allowed, for example <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format">the angular convention</a> recommends <code class="highlighter-rouge">docs:</code>, <code class="highlighter-rouge">style:</code>, <code class="highlighter-rouge">refactor:</code>, <code class="highlighter-rouge">perf:</code>, <code class="highlighter-rouge">test:</code>, <code class="highlighter-rouge">chore:</code>, but these tags are
|
||||
not mandated by the conventional commits specification.</p>
|
||||
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
|
||||
<p>In software development, it’s been my experience that bugs are most often introduced
|
||||
at the boundaries between applications. Unit testing works great for testing the interactions
|
||||
that an open-source maintainer knows about, but do a poor job of capturing all the
|
||||
interesting, often unexpected, ways that a community puts a library to use.</p>
|
||||
|
||||
<p>Anyone who has upgraded to a new patch version of a dependency, only to watch their
|
||||
application start throwing a steady stream of 500 errors, knows how important
|
||||
a readable commit history (and <a href="http://keepachangelog.com/en/0.3.0/">ideally a well maintained CHANGLOG</a>) is to the ensuing
|
||||
forensic process.</p>
|
||||
|
||||
<p>The Conventional Commits specification proposes introducing a standardized lightweight
|
||||
convention on top of commit messages. This convention dovetails with <a href="http://semver.org">semver</a>,
|
||||
asking software developers to describe in commit messages, features, fixes, and breaking
|
||||
changes that they make.</p>
|
||||
|
||||
<p>By introducing this convention, we create a common language that makes it easier to
|
||||
debug issues across codebase boundaries.</p>
|
||||
|
||||
<h2 id="conventional-commits-specification">Conventional Commits Specification</h2>
|
||||
|
||||
<p>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>.</p>
|
||||
|
||||
<ol>
|
||||
<li>commits MUST be prefixed with a type, which consists of a verb, <code class="highlighter-rouge">feat</code>, <code class="highlighter-rouge">fix</code>, etc.,
|
||||
followed by a colon and a space.</li>
|
||||
<li>the type <code class="highlighter-rouge">feat</code> MUST be used when a commit adds a new feature to your application
|
||||
or library.</li>
|
||||
<li>the type <code class="highlighter-rouge">fix</code> MUST be used when a commit represents a bug fix for your application.</li>
|
||||
<li>an optional scope MAY be provided after a type. A scope is a phrase describing
|
||||
a component of the codebase, enclosed in parenthesis, e.g., <code class="highlighter-rouge">fix(parser):</code></li>
|
||||
<li>A description MUST immediately follow the type and optional scope.
|
||||
The description is a short description of the pull request, e.g.,
|
||||
<em>fix: array parsing issue when multiple spaces were contained in string.</em></li>
|
||||
<li>A longer commit body MAY be provided after the short description. The body MUST
|
||||
begin one blank line after the description.</li>
|
||||
<li>A footer MAY be provided one blank line after the body. The footer SHOULD contain
|
||||
additional meta-information about the pull-request, such as the issues it fixes.</li>
|
||||
<li>Breaking changes MUST be indicated at the very beginning of the footer or body section of a commit. A breaking change MUST consist of the uppercase text <code class="highlighter-rouge">BREAKING CHANGE</code>, followed by a colon and a space. A short
|
||||
description MUST be provided after <code class="highlighter-rouge">BREAKING CHANGE: </code>, describing why the change is
|
||||
breaking, e.g., <em>BREAKING CHANGE: I must now leave Earth for no raisin!</em></li>
|
||||
<li>types other than <code class="highlighter-rouge">feat</code> and <code class="highlighter-rouge">fix</code> MAY be used in your commit messages.</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="why-use-conventional-commits">Why Use Conventional Commits</h2>
|
||||
|
||||
<ul>
|
||||
<li>Automatically generating CHANGELOGs.</li>
|
||||
<li>Automatically determining a semantic version bump (based on the types of commits landed).</li>
|
||||
<li>Communicating the nature of changes to teammates, the public, and other stakeholders quickly.</li>
|
||||
<li>Triggering build and publish processes.</li>
|
||||
<li>Helping organize and analyze the nature of your own changes in a more productive fashion.</li>
|
||||
<li>Making it easier for people to contribute to your projects, by allowing them to explore
|
||||
a more structured commit history.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="faq">FAQ</h2>
|
||||
|
||||
<h3 id="how-should-i-deal-with-commit-messages-in-the-initial-development-phase">How should I deal with commit messages in the initial development phase?</h3>
|
||||
|
||||
<p>We recommend that you proceed as if you’ve an already released product. Typically <em>somebody</em>, even if its your fellow software developers, is using your software. They’ll want to know what’s fixed, what breaks etc.</p>
|
||||
|
||||
<h3 id="what-do-i-do-if-the-commit-conforms-to-more-than-one-of-the-commit-types">What do I do if the commit conforms to more than one of the commit types?</h3>
|
||||
|
||||
<p>Go back and make multiple commits whenever possible. Part of the beautify of Conventional Commits is its ability to drive us to make more organized commits and PRs.</p>
|
||||
|
||||
<h3 id="doesnt-this-discourage-rapid-development-and-fast-iteration">Doesn’t this discourage rapid development and fast iteration?</h3>
|
||||
<p>It discourages moving fast in a disorganized way. It helps you be able to move fast long term and across more projects with more diverse teams.</p>
|
||||
|
||||
<h3 id="might-conventional-commits-lead-developers-to-limit-the-type-of-commits-they-make-because-theyll-be-thinking-in-the-types-provided">Might Conventional Commits lead developers to limit the type of commits they make because they’ll be thinking in the types provided?</h3>
|
||||
<p>When used properly, Convential Commits encourages us to make more of certain types of commits such as fixes. Other than that, the flexibility of Conventional Commits allows your team to come up with their own types and change those types over time.</p>
|
||||
|
||||
<h3 id="how-does-this-relate-to-semver">How does this relate to SemVer?</h3>
|
||||
|
||||
<p>we encourage you do use Conventional Commits in conjunction with semantic-versioning. When you publish a version of your library, if you’ve landed only <code class="highlighter-rouge">fix:</code> commits use a patch version, if you’ve landed a feature use a minor release, if you’ve landed a breaking change use a major release.</p>
|
||||
|
||||
<h3 id="what-do-i-do-if-i-accidentally-use-the-wrong-commit-type">What do I do if I accidentally use the wrong commit type?</h3>
|
||||
|
||||
<p>Prior to merging or releasing the mistake, we recommend using <code class="highlighter-rouge">git rebase -i</code> to edit the commit history. After release, the cleanup will be different according to what tools and processes you use.</p>
|
||||
|
||||
<h3 id="do-all-my-contributors-need-to-use-the-conventional-commit-specification">Do all my contributors need to use the conventional commit specification?</h3>
|
||||
|
||||
<p>No, if you use a squash based workflow on Git lead maintainers can cleanup the commit messages as they’re merged – adding no workload to casual committers</p>
|
||||
|
||||
<h2 id="whos-behind-thisinspired-this">Who’s Behind This/Inspired This?</h2>
|
||||
|
||||
<p>The Conventional Commit standard is inspired by the <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit">Angular Commit Guidelines</a>, which
|
||||
I was introduced to by the wondeful folks behind <a href="https://github.com/semantic-release/semantic-release">semantic-release</a> (a tool
|
||||
that fully automates npm publishes).</p>
|
||||
|
||||
<p>The first draft of this specification has been written in collaboration with some of the
|
||||
folks contributing to:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://github.com/conventional-changelog/standard-version">standard-version</a>: a tool
|
||||
for managing CHANGELOG generation, tagging, and version bumping, based on the
|
||||
Conventional Commit standard.</li>
|
||||
<li><a href="https://www.npmjs.com/package/unleash">unlease</a>: a tool for automating the
|
||||
software release and publishing lifecycle.</li>
|
||||
<li><a href="https://github.com/lerna/lerna">lerna</a>: a tool for managing monorepos, which grew out
|
||||
of the Babel project.</li>
|
||||
<li><a href="https://github.com/conventional-changelog/conventional-changelog">conventional-changelog</a>: a
|
||||
set of tools for parsing conventional commit messages from git histories.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="license">License</h2>
|
||||
|
||||
<p><a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons - CC BY 3.0</a></p>
|
||||
|
||||
</div>
|
||||
<script src="/js/anchorli.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1 +0,0 @@
|
||||
Sitemap: http://localhost:4000/sitemap.xml
|
@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
bundle install
|
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
bundle exec jekyll build --config _config.yml,_config_local.yml
|
||||
bundle exec htmlproofer _site --check-html --disable-external
|
@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
bundle exec jekyll serve --config _config.yml,_config_local.yml
|
@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>http://localhost:4000/lang/es/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/lang/es/spec/v1.0.0-beta.html</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://localhost:4000/spec/v1.0.0-beta.html</loc>
|
||||
</url>
|
||||
</urlset>
|
@ -1,201 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
|
||||
<!-- Begin Jekyll SEO tag v2.1.0 -->
|
||||
<title>Conventional Commits 1.0.0-beta - Conventional Commits</title>
|
||||
<meta property="og:title" content="Conventional Commits 1.0.0-beta" />
|
||||
<link rel="canonical" href="http://localhost:4000/spec/v1.0.0-beta.html" />
|
||||
<meta property="og:url" content="http://localhost:4000/spec/v1.0.0-beta.html" />
|
||||
<meta property="og:site_name" content="Conventional Commits" />
|
||||
<script type="application/ld+json">
|
||||
{"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"headline": "Conventional Commits 1.0.0-beta",
|
||||
"url": "http://localhost:4000/spec/v1.0.0-beta.html"}</script>
|
||||
<!-- End Jekyll SEO tag -->
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<ol class="nav lang" dir="ltr">
|
||||
|
||||
|
||||
<li class="language language-en">
|
||||
<a rel="alternate" lang="en" hreflang="en"
|
||||
href="/lang/en">
|
||||
english (en)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
<ol class="nav">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="version version-1.0.0-beta">
|
||||
<a href="/spec/v1.0.0-beta.html">
|
||||
1.0.0-beta
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ol>
|
||||
<div id="spec">
|
||||
<h1 id="conventional-commits-100-beta">Conventional Commits 1.0.0-beta</h1>
|
||||
|
||||
<h2 id="summary">Summary</h2>
|
||||
|
||||
<p>As an open-source maintainer, squash feature branches onto <code class="highlighter-rouge">master</code> and write
|
||||
a standardized commit message while doing so.</p>
|
||||
|
||||
<p>The commit message should be structured as follows:</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="highlighter-rouge"><pre class="highlight"><code><type>[optional scope]: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer]
|
||||
</code></pre>
|
||||
</div>
|
||||
<hr />
|
||||
|
||||
<p><br />
|
||||
The commit contains the following structural elements, to communicate intent to the
|
||||
consumers of your library:</p>
|
||||
|
||||
<ol>
|
||||
<li><strong>fix:</strong> a commit of the <em>type</em> <code class="highlighter-rouge">fix</code> patches a bug in your codebase (this correlates with <a href="http://semver.org/#summary"><code class="highlighter-rouge">PATCH</code></a> in semantic versioning).</li>
|
||||
<li><strong>feat:</strong> a commit of the <em>type</em> <code class="highlighter-rouge">feat</code> introduces a new feature to the codebase (this correlates
|
||||
with <a href="http://semver.org/#summary"><code class="highlighter-rouge">MINOR</code></a> in semantic versioning).</li>
|
||||
<li><strong>BREAKING CHANGE:</strong> a commit that has the text <code class="highlighter-rouge">BREAKING CHANGE:</code> at the beginning of its optional body or footer section introduces a breaking API change (correlating with <a href="http://semver.org/#summary"><code class="highlighter-rouge">Major</code></a> in semantic versioning). A breaking change can be
|
||||
part of either a <code class="highlighter-rouge">fix:</code> or <code class="highlighter-rouge">feat:</code> <em>type</em> commit.</li>
|
||||
</ol>
|
||||
|
||||
<p><br />
|
||||
A scope may be provided to a commit’s type, to provide additional contextual information and
|
||||
is contained within parenthesis, e.g., <code class="highlighter-rouge">feat(parser): adds ability to parse arrays</code>.</p>
|
||||
|
||||
<p>Commit <em>types</em> other than <code class="highlighter-rouge">fix:</code> and <code class="highlighter-rouge">feat:</code> are allowed, for example <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format">the angular convention</a> recommends <code class="highlighter-rouge">docs:</code>, <code class="highlighter-rouge">style:</code>, <code class="highlighter-rouge">refactor:</code>, <code class="highlighter-rouge">perf:</code>, <code class="highlighter-rouge">test:</code>, <code class="highlighter-rouge">chore:</code>, but these tags are
|
||||
not mandated by the conventional commits specification.</p>
|
||||
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
|
||||
<p>In software development, it’s been my experience that bugs are most often introduced
|
||||
at the boundaries between applications. Unit testing works great for testing the interactions
|
||||
that an open-source maintainer knows about, but do a poor job of capturing all the
|
||||
interesting, often unexpected, ways that a community puts a library to use.</p>
|
||||
|
||||
<p>Anyone who has upgraded to a new patch version of a dependency, only to watch their
|
||||
application start throwing a steady stream of 500 errors, knows how important
|
||||
a readable commit history (and <a href="http://keepachangelog.com/en/0.3.0/">ideally a well maintained CHANGLOG</a>) is to the ensuing
|
||||
forensic process.</p>
|
||||
|
||||
<p>The Conventional Commits specification proposes introducing a standardized lightweight
|
||||
convention on top of commit messages. This convention dovetails with <a href="http://semver.org">semver</a>,
|
||||
asking software developers to describe in commit messages, features, fixes, and breaking
|
||||
changes that they make.</p>
|
||||
|
||||
<p>By introducing this convention, we create a common language that makes it easier to
|
||||
debug issues across codebase boundaries.</p>
|
||||
|
||||
<h2 id="conventional-commits-specification">Conventional Commits Specification</h2>
|
||||
|
||||
<p>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>.</p>
|
||||
|
||||
<ol>
|
||||
<li>commits MUST be prefixed with a type, which consists of a verb, <code class="highlighter-rouge">feat</code>, <code class="highlighter-rouge">fix</code>, etc.,
|
||||
followed by a colon and a space.</li>
|
||||
<li>the type <code class="highlighter-rouge">feat</code> MUST be used when a commit adds a new feature to your application
|
||||
or library.</li>
|
||||
<li>the type <code class="highlighter-rouge">fix</code> MUST be used when a commit represents a bug fix for your application.</li>
|
||||
<li>an optional scope MAY be provided after a type. A scope is a phrase describing
|
||||
a component of the codebase, enclosed in parenthesis, e.g., <code class="highlighter-rouge">fix(parser):</code></li>
|
||||
<li>A description MUST immediately follow the type and optional scope.
|
||||
The description is a short description of the pull request, e.g.,
|
||||
<em>fix: array parsing issue when multiple spaces were contained in string.</em></li>
|
||||
<li>A longer commit body MAY be provided after the short description. The body MUST
|
||||
begin one blank line after the description.</li>
|
||||
<li>A footer MAY be provided one blank line after the body. The footer SHOULD contain
|
||||
additional meta-information about the pull-request, such as the issues it fixes.</li>
|
||||
<li>Breaking changes MUST be indicated at the very beginning of the footer or body section of a commit. A breaking change MUST consist of the uppercase text <code class="highlighter-rouge">BREAKING CHANGE</code>, followed by a colon and a space. A short
|
||||
description MUST be provided after <code class="highlighter-rouge">BREAKING CHANGE: </code>, describing why the change is
|
||||
breaking, e.g., <em>BREAKING CHANGE: I must now leave Earth for no raisin!</em></li>
|
||||
<li>types other than <code class="highlighter-rouge">feat</code> and <code class="highlighter-rouge">fix</code> MAY be used in your commit messages.</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="why-use-conventional-commits">Why Use Conventional Commits</h2>
|
||||
|
||||
<ul>
|
||||
<li>Automatically generating CHANGELOGs.</li>
|
||||
<li>Automatically determining a semantic version bump (based on the types of commits landed).</li>
|
||||
<li>Communicating the nature of changes to teammates, the public, and other stakeholders quickly.</li>
|
||||
<li>Triggering build and publish processes.</li>
|
||||
<li>Helping organize and analyze the nature of your own changes in a more productive fashion.</li>
|
||||
<li>Making it easier for people to contribute to your projects, by allowing them to explore
|
||||
a more structured commit history.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="faq">FAQ</h2>
|
||||
|
||||
<h3 id="how-should-i-deal-with-commit-messages-in-the-initial-development-phase">How should I deal with commit messages in the initial development phase?</h3>
|
||||
|
||||
<p>We recommend that you proceed as if you’ve an already released product. Typically <em>somebody</em>, even if its your fellow software developers, is using your software. They’ll want to know what’s fixed, what breaks etc.</p>
|
||||
|
||||
<h3 id="what-do-i-do-if-the-commit-conforms-to-more-than-one-of-the-commit-types">What do I do if the commit conforms to more than one of the commit types?</h3>
|
||||
|
||||
<p>Go back and make multiple commits whenever possible. Part of the beautify of Conventional Commits is its ability to drive us to make more organized commits and PRs.</p>
|
||||
|
||||
<h3 id="doesnt-this-discourage-rapid-development-and-fast-iteration">Doesn’t this discourage rapid development and fast iteration?</h3>
|
||||
<p>It discourages moving fast in a disorganized way. It helps you be able to move fast long term and across more projects with more diverse teams.</p>
|
||||
|
||||
<h3 id="might-conventional-commits-lead-developers-to-limit-the-type-of-commits-they-make-because-theyll-be-thinking-in-the-types-provided">Might Conventional Commits lead developers to limit the type of commits they make because they’ll be thinking in the types provided?</h3>
|
||||
<p>When used properly, Convential Commits encourages us to make more of certain types of commits such as fixes. Other than that, the flexibility of Conventional Commits allows your team to come up with their own types and change those types over time.</p>
|
||||
|
||||
<h3 id="how-does-this-relate-to-semver">How does this relate to SemVer?</h3>
|
||||
|
||||
<p>we encourage you do use Conventional Commits in conjunction with semantic-versioning. When you publish a version of your library, if you’ve landed only <code class="highlighter-rouge">fix:</code> commits use a patch version, if you’ve landed a feature use a minor release, if you’ve landed a breaking change use a major release.</p>
|
||||
|
||||
<h3 id="what-do-i-do-if-i-accidentally-use-the-wrong-commit-type">What do I do if I accidentally use the wrong commit type?</h3>
|
||||
|
||||
<p>Prior to merging or releasing the mistake, we recommend using <code class="highlighter-rouge">git rebase -i</code> to edit the commit history. After release, the cleanup will be different according to what tools and processes you use.</p>
|
||||
|
||||
<h3 id="do-all-my-contributors-need-to-use-the-conventional-commit-specification">Do all my contributors need to use the conventional commit specification?</h3>
|
||||
|
||||
<p>No, if you use a squash based workflow on Git lead maintainers can cleanup the commit messages as they’re merged – adding no workload to casual committers</p>
|
||||
|
||||
<h2 id="whos-behind-thisinspired-this">Who’s Behind This/Inspired This?</h2>
|
||||
|
||||
<p>The Conventional Commit standard is inspired by the <a href="https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit">Angular Commit Guidelines</a>, which
|
||||
I was introduced to by the wondeful folks behind <a href="https://github.com/semantic-release/semantic-release">semantic-release</a> (a tool
|
||||
that fully automates npm publishes).</p>
|
||||
|
||||
<p>The first draft of this specification has been written in collaboration with some of the
|
||||
folks contributing to:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://github.com/conventional-changelog/standard-version">standard-version</a>: a tool
|
||||
for managing CHANGELOG generation, tagging, and version bumping, based on the
|
||||
Conventional Commit standard.</li>
|
||||
<li><a href="https://www.npmjs.com/package/unleash">unleash</a>: a tool for automating the
|
||||
software release and publishing lifecycle.</li>
|
||||
<li><a href="https://github.com/lerna/lerna">lerna</a>: a tool for managing monorepos, which grew out
|
||||
of the Babel project.</li>
|
||||
<li><a href="https://github.com/conventional-changelog/conventional-changelog">conventional-changelog</a>: a
|
||||
set of tools for parsing conventional commit messages from git histories.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="license">License</h2>
|
||||
|
||||
<p><a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons - CC BY 3.0</a></p>
|
||||
|
||||
</div>
|
||||
<script src="/js/anchorli.js"></script>
|
||||
</body>
|
||||
</html>
|
6
index.md
6
index.md
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Conventional Commits 1.0.0-beta
|
||||
title: Conventional Commits 1.0.0-beta.1
|
||||
redirect_from: /lang/en/
|
||||
---
|
||||
|
||||
# Conventional Commits 1.0.0-beta
|
||||
# Conventional Commits 1.0.0-beta.1
|
||||
|
||||
## Summary
|
||||
|
||||
@ -31,7 +31,7 @@ consumers of your library:
|
||||
2. **feat:** a commit of the _type_ `feat` introduces a new feature to the codebase (this correlates
|
||||
with [`MINOR`](http://semver.org/#summary) in semantic versioning).
|
||||
3. **BREAKING CHANGE:** a commit that has the text `BREAKING CHANGE:` at the beginning of its optional body or footer section introduces a breaking API change (correlating with [`Major`](http://semver.org/#summary) in semantic versioning). A breaking change can be
|
||||
part of either a `fix:` or `feat:` _type_ commit.
|
||||
part of commits of any _type_. e.g., a `fix:`, `feat:` & `chore:` types would all be valid, in addition to any other _type_.
|
||||
|
||||
<br />
|
||||
A scope may be provided to a commit's type, to provide additional contextual information and
|
||||
|
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Conventional Commits 1.0.0-beta
|
||||
title: Conventional Commits 1.0.0-beta.1
|
||||
language: es
|
||||
---
|
||||
|
||||
# Conventional Commits 1.0.0-beta
|
||||
# Conventional Commits 1.0.0-beta.1
|
||||
|
||||
## Summary
|
||||
|
||||
@ -31,7 +31,7 @@ consumers of your library:
|
||||
2. **feat:** a commit of the _type_ `feat` introduces a new feature to the codebase (this correlates
|
||||
with [`MINOR`](http://semver.org/#summary) in semantic versioning).
|
||||
3. **BREAKING CHANGE:** a commit that has the text `BREAKING CHANGE:` at the beginning of its optional body or footer section introduces a breaking API change (correlating with [`Major`](http://semver.org/#summary) in semantic versioning). A breaking change can be
|
||||
part of either a `fix:` or `feat:` _type_ commit.
|
||||
part of commits of any _type_. e.g., a `fix:`, `feat:` & `chore:` types would all be valid, in addition to any other _type_.
|
||||
|
||||
<br />
|
||||
A scope may be provided to a commit's type, to provide additional contextual information and
|
||||
|
163
lang/es/spec/v1.0.0-beta.1.md
Normal file
163
lang/es/spec/v1.0.0-beta.1.md
Normal file
@ -0,0 +1,163 @@
|
||||
---
|
||||
title: Conventional Commits 1.0.0-beta
|
||||
language: es
|
||||
---
|
||||
|
||||
# Conventional Commits 1.0.0-beta
|
||||
|
||||
## Summary
|
||||
|
||||
As an open-source maintainer, squash feature branches onto `master` and write
|
||||
a standardized commit message while doing so.
|
||||
|
||||
The commit message should be structured as follows:
|
||||
|
||||
---
|
||||
|
||||
```
|
||||
<type>[optional scope]: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer]
|
||||
```
|
||||
---
|
||||
|
||||
<br />
|
||||
The commit contains the following structural elements, to communicate intent to the
|
||||
consumers of your library:
|
||||
|
||||
1. **fix:** a commit of the _type_ `fix` patches a bug in your codebase (this correlates with [`PATCH`](http://semver.org/#summary) in semantic versioning).
|
||||
2. **feat:** a commit of the _type_ `feat` introduces a new feature to the codebase (this correlates
|
||||
with [`MINOR`](http://semver.org/#summary) in semantic versioning).
|
||||
3. **BREAKING CHANGE:** a commit that has the text `BREAKING CHANGE:` at the beginning of its optional body or footer section introduces a breaking API change (correlating with [`Major`](http://semver.org/#summary) in semantic versioning). A breaking change can be
|
||||
part of commits of any _type_. E.g., a `fix:`, `feat:` & `chore:` types would all be valid, in addition to any other _type_.
|
||||
|
||||
<br />
|
||||
A scope may be provided to a commit's type, to provide additional contextual information and
|
||||
is contained within parenthesis, e.g., `feat(parser): adds ability to parse arrays`.
|
||||
|
||||
Commit _types_ other than `fix:` and `feat:` are allowed, for example [the Angular convention](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit) recommends `docs:`, `style:`, `refactor:`, `perf:`, `test:`, `chore:`, but these tags are
|
||||
not mandated by the conventional commits specification.
|
||||
|
||||
## Introduction
|
||||
|
||||
In software development, it's been my experience that bugs are most often introduced
|
||||
at the boundaries between applications. Unit testing works great for testing the interactions
|
||||
that an open-source maintainer knows about, but do a poor job of capturing all the
|
||||
interesting, often unexpected, ways that a community puts a library to use.
|
||||
|
||||
Anyone who has upgraded to a new patch version of a dependency, only to watch their
|
||||
application start throwing a steady stream of 500 errors, knows how important
|
||||
a readable commit history (and [ideally a well maintained CHANGLOG](http://keepachangelog.com/en/0.3.0/)) is to the ensuing
|
||||
forensic process.
|
||||
|
||||
The Conventional Commits specification proposes introducing a standardized lightweight
|
||||
convention on top of commit messages. This convention dovetails with [SemVer](http://semver.org),
|
||||
asking software developers to describe in commit messages, features, fixes, and breaking
|
||||
changes that they make.
|
||||
|
||||
By introducing this convention, we create a common language that makes it easier to
|
||||
debug issues across project boundaries.
|
||||
|
||||
## Conventional Commits Specification
|
||||
|
||||
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt).
|
||||
|
||||
1. commits MUST be prefixed with a type, which consists of a verb, `feat`, `fix`, etc.,
|
||||
followed by a colon and a space.
|
||||
2. the type `feat` MUST be used when a commit adds a new feature to your application
|
||||
or library.
|
||||
3. the type `fix` MUST be used when a commit represents a bug fix for your application.
|
||||
4. an optional scope MAY be provided after a type. A scope is a phrase describing
|
||||
a section of the codebase enclosed in parenthesis, e.g., `fix(parser):`
|
||||
5. A description MUST immediately follow the type/scope prefix.
|
||||
The description is a short description of the pull request, e.g.,
|
||||
_fix: array parsing issue when multiple spaces were contained in string._
|
||||
6. A longer commit body MAY be provided after the short description. The body MUST
|
||||
begin one blank line after the description.
|
||||
7. A footer MAY be provided one blank line after the body. The footer SHOULD contain
|
||||
additional meta-information about the pull-request (such as the issues it fixes, e.g., `fixes #13, #5`).
|
||||
8. Breaking changes MUST be indicated at the very beginning of the footer or body section of a commit. A breaking change MUST consist of the uppercase text `BREAKING CHANGE`, followed by a colon and a space.
|
||||
9. A description MUST be provided after the `BREAKING CHANGE: `, describing what
|
||||
has changed about the API, e.g., _BREAKING CHANGE: environment variables now take precedence over config files._
|
||||
10. types other than `feat` and `fix` MAY be used in your commit messages.
|
||||
|
||||
## Why Use Conventional Commits
|
||||
|
||||
* Automatically generating CHANGELOGs.
|
||||
* Automatically determining a semantic version bump (based on the types of commits landed).
|
||||
* Communicating the nature of changes to teammates, the public, and other stakeholders.
|
||||
* Triggering build and publish processes.
|
||||
* Making it easier for people to contribute to your projects, by allowing them to explore
|
||||
a more structured commit history.
|
||||
|
||||
## FAQ
|
||||
|
||||
### How should I deal with commit messages in the initial development phase?
|
||||
|
||||
We recommend that you proceed as if you've an already released product. Typically *somebody*, even if its your fellow software developers, is using your software. They'll want to know what's fixed, what breaks etc.
|
||||
|
||||
### What do I do if the commit conforms to more than one of the commit types?
|
||||
|
||||
Go back and make multiple commits whenever possible. Part of the benefit of Conventional Commits is its ability to drive us to make more organized commits and PRs.
|
||||
|
||||
### Doesn’t this discourage rapid development and fast iteration?
|
||||
|
||||
It discourages moving fast in a disorganized way. It helps you be able to move fast long term across multiple projects with varied contributors.
|
||||
|
||||
### Might Conventional Commits lead developers to limit the type of commits they make because they'll be thinking in the types provided?
|
||||
|
||||
Conventional Commits encourages us to make more of certain types of commits such as fixes. Other than that, the flexibility of Conventional Commits allows your team to come up with their own types and change those types over time.
|
||||
|
||||
### How does this relate to SemVer?
|
||||
|
||||
`fix` type commits should be translated to `PATCH` releases. `feat` type commits should be translated to `MINOR` releases. Commits with `BREAKING CHANGE` in the commits, regardless of type, should be translated to `MAJOR` releases.
|
||||
|
||||
### How should I version my extensions to the Conventional Commits Specification, e.g. `@jameswomack/conventional-commit-spec`?
|
||||
|
||||
We recommend using SemVer to release your own extensions to this specification (and
|
||||
encourage you to make these extensions!)
|
||||
|
||||
### What do I do if I accidentally use the wrong commit type?
|
||||
|
||||
#### When you used a type that's of the spec but not the correct type, e.g. `fix` instead of `feat`
|
||||
|
||||
Prior to merging or releasing the mistake, we recommend using `git rebase -i` to edit the commit history. After release, the cleanup will be different according to what tools and processes you use.
|
||||
|
||||
#### When you used a type *not* of the spec, e.g. `feet` instead of `feat`
|
||||
|
||||
In a worst case scenario, it's not the end of the world if a commit lands that does not meet the conventional commit specification. It simply means that commit will be missed by tools that are based on the spec.
|
||||
|
||||
### Do all my contributors need to use the conventional commit specification?
|
||||
|
||||
No! If you use a squash based workflow on Git lead maintainers can cleanup the commit messages as they're merged—adding no workload to casual committers. A common workflow for this is to have your git system automatically squash commits from a pull request and present a form for the lead maintainer to enter the proper git commit message for the merge.
|
||||
|
||||
## About
|
||||
|
||||
The Conventional Commit specification is inspired by, and based heavily on, the [Angular Commit Guidelines](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit).
|
||||
|
||||
The first draft of this specification has been written in collaboration with some of the
|
||||
folks contributing to:
|
||||
|
||||
* [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog): a
|
||||
set of tools for parsing conventional commit messages from git histories.
|
||||
* [unleash](https://github.com/netflix/unleash): a tool for automating the
|
||||
software release and publishing lifecycle.
|
||||
* [lerna](https://github.com/lerna/lerna): a tool for managing monorepos, which grew out
|
||||
of the Babel project.
|
||||
|
||||
## Projects Using Conventional Commits
|
||||
|
||||
* [yargs](https://github.com/yargs/yargs): everyone's favorite pirate themed command line argument parser.
|
||||
* [istanbuljs](https://github.com/istanbuljs/istanbuljs): a collection of open-source tools
|
||||
and libraries for adding test coverage to your JavaScript tests.
|
||||
* [standard-version](https://github.com/conventional-changelog/standard-version): Automatic versioning and CHANGELOG management, using GitHub's new squash button and the recommended Conventional Commits workflow.
|
||||
|
||||
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)
|
||||
|
||||
_want your project on this list?_ [send a pull request](https://github.com/conventional-changelog/conventionalcommits.org/pulls).
|
||||
|
||||
## License
|
||||
|
||||
[Creative Commons - CC BY 3.0](http://creativecommons.org/licenses/by/3.0/)
|
163
spec/v1.0.0-beta.1.md
Normal file
163
spec/v1.0.0-beta.1.md
Normal file
@ -0,0 +1,163 @@
|
||||
---
|
||||
title: Conventional Commits 1.0.0-beta.1
|
||||
redirect_from: /lang/en/
|
||||
---
|
||||
|
||||
# Conventional Commits 1.0.0-beta.1
|
||||
|
||||
## Summary
|
||||
|
||||
As an open-source maintainer, squash feature branches onto `master` and write
|
||||
a standardized commit message while doing so.
|
||||
|
||||
The commit message should be structured as follows:
|
||||
|
||||
---
|
||||
|
||||
```
|
||||
<type>[optional scope]: <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer]
|
||||
```
|
||||
---
|
||||
|
||||
<br />
|
||||
The commit contains the following structural elements, to communicate intent to the
|
||||
consumers of your library:
|
||||
|
||||
1. **fix:** a commit of the _type_ `fix` patches a bug in your codebase (this correlates with [`PATCH`](http://semver.org/#summary) in semantic versioning).
|
||||
2. **feat:** a commit of the _type_ `feat` introduces a new feature to the codebase (this correlates
|
||||
with [`MINOR`](http://semver.org/#summary) in semantic versioning).
|
||||
3. **BREAKING CHANGE:** a commit that has the text `BREAKING CHANGE:` at the beginning of its optional body or footer section introduces a breaking API change (correlating with [`Major`](http://semver.org/#summary) in semantic versioning). A breaking change can be
|
||||
part of commits of any _type_. e.g., a `fix:`, `feat:` & `chore:` types would all be valid, in addition to any other _type_.
|
||||
|
||||
<br />
|
||||
A scope may be provided to a commit's type, to provide additional contextual information and
|
||||
is contained within parenthesis, e.g., `feat(parser): adds ability to parse arrays`.
|
||||
|
||||
Commit _types_ other than `fix:` and `feat:` are allowed, for example [the Angular convention](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit) recommends `docs:`, `style:`, `refactor:`, `perf:`, `test:`, `chore:`, but these tags are
|
||||
not mandated by the conventional commits specification.
|
||||
|
||||
## Introduction
|
||||
|
||||
In software development, it's been my experience that bugs are most often introduced
|
||||
at the boundaries between applications. Unit testing works great for testing the interactions
|
||||
that an open-source maintainer knows about, but do a poor job of capturing all the
|
||||
interesting, often unexpected, ways that a community puts a library to use.
|
||||
|
||||
Anyone who has upgraded to a new patch version of a dependency, only to watch their
|
||||
application start throwing a steady stream of 500 errors, knows how important
|
||||
a readable commit history (and [ideally a well maintained CHANGLOG](http://keepachangelog.com/en/0.3.0/)) is to the ensuing
|
||||
forensic process.
|
||||
|
||||
The Conventional Commits specification proposes introducing a standardized lightweight
|
||||
convention on top of commit messages. This convention dovetails with [SemVer](http://semver.org),
|
||||
asking software developers to describe in commit messages, features, fixes, and breaking
|
||||
changes that they make.
|
||||
|
||||
By introducing this convention, we create a common language that makes it easier to
|
||||
debug issues across project boundaries.
|
||||
|
||||
## Conventional Commits Specification
|
||||
|
||||
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt).
|
||||
|
||||
1. commits MUST be prefixed with a type, which consists of a verb, `feat`, `fix`, etc.,
|
||||
followed by a colon and a space.
|
||||
2. the type `feat` MUST be used when a commit adds a new feature to your application
|
||||
or library.
|
||||
3. the type `fix` MUST be used when a commit represents a bug fix for your application.
|
||||
4. an optional scope MAY be provided after a type. A scope is a phrase describing
|
||||
a section of the codebase enclosed in parenthesis, e.g., `fix(parser):`
|
||||
5. A description MUST immediately follow the type/scope prefix.
|
||||
The description is a short description of the pull request, e.g.,
|
||||
_fix: array parsing issue when multiple spaces were contained in string._
|
||||
6. A longer commit body MAY be provided after the short description. The body MUST
|
||||
begin one blank line after the description.
|
||||
7. A footer MAY be provided one blank line after the body. The footer SHOULD contain
|
||||
additional meta-information about the pull-request (such as the issues it fixes, e.g., `fixes #13, #5`).
|
||||
8. Breaking changes MUST be indicated at the very beginning of the footer or body section of a commit. A breaking change MUST consist of the uppercase text `BREAKING CHANGE`, followed by a colon and a space.
|
||||
9. A description MUST be provided after the `BREAKING CHANGE: `, describing what
|
||||
has changed about the API, e.g., _BREAKING CHANGE: environment variables now take precedence over config files._
|
||||
10. types other than `feat` and `fix` MAY be used in your commit messages.
|
||||
|
||||
## Why Use Conventional Commits
|
||||
|
||||
* Automatically generating CHANGELOGs.
|
||||
* Automatically determining a semantic version bump (based on the types of commits landed).
|
||||
* Communicating the nature of changes to teammates, the public, and other stakeholders.
|
||||
* Triggering build and publish processes.
|
||||
* Making it easier for people to contribute to your projects, by allowing them to explore
|
||||
a more structured commit history.
|
||||
|
||||
## FAQ
|
||||
|
||||
### How should I deal with commit messages in the initial development phase?
|
||||
|
||||
We recommend that you proceed as if you've an already released product. Typically *somebody*, even if its your fellow software developers, is using your software. They'll want to know what's fixed, what breaks etc.
|
||||
|
||||
### What do I do if the commit conforms to more than one of the commit types?
|
||||
|
||||
Go back and make multiple commits whenever possible. Part of the benefit of Conventional Commits is its ability to drive us to make more organized commits and PRs.
|
||||
|
||||
### Doesn’t this discourage rapid development and fast iteration?
|
||||
|
||||
It discourages moving fast in a disorganized way. It helps you be able to move fast long term across multiple projects with varied contributors.
|
||||
|
||||
### Might Conventional Commits lead developers to limit the type of commits they make because they'll be thinking in the types provided?
|
||||
|
||||
Conventional Commits encourages us to make more of certain types of commits such as fixes. Other than that, the flexibility of Conventional Commits allows your team to come up with their own types and change those types over time.
|
||||
|
||||
### How does this relate to SemVer?
|
||||
|
||||
`fix` type commits should be translated to `PATCH` releases. `feat` type commits should be translated to `MINOR` releases. Commits with `BREAKING CHANGE` in the commits, regardless of type, should be translated to `MAJOR` releases.
|
||||
|
||||
### How should I version my extensions to the Conventional Commits Specification, e.g. `@jameswomack/conventional-commit-spec`?
|
||||
|
||||
We recommend using SemVer to release your own extensions to this specification (and
|
||||
encourage you to make these extensions!)
|
||||
|
||||
### What do I do if I accidentally use the wrong commit type?
|
||||
|
||||
#### When you used a type that's of the spec but not the correct type, e.g. `fix` instead of `feat`
|
||||
|
||||
Prior to merging or releasing the mistake, we recommend using `git rebase -i` to edit the commit history. After release, the cleanup will be different according to what tools and processes you use.
|
||||
|
||||
#### When you used a type *not* of the spec, e.g. `feet` instead of `feat`
|
||||
|
||||
In a worst case scenario, it's not the end of the world if a commit lands that does not meet the conventional commit specification. It simply means that commit will be missed by tools that are based on the spec.
|
||||
|
||||
### Do all my contributors need to use the conventional commit specification?
|
||||
|
||||
No! If you use a squash based workflow on Git lead maintainers can cleanup the commit messages as they're merged—adding no workload to casual committers. A common workflow for this is to have your git system automatically squash commits from a pull request and present a form for the lead maintainer to enter the proper git commit message for the merge.
|
||||
|
||||
## About
|
||||
|
||||
The Conventional Commit specification is inspired by, and based heavily on, the [Angular Commit Guidelines](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit).
|
||||
|
||||
The first draft of this specification has been written in collaboration with some of the
|
||||
folks contributing to:
|
||||
|
||||
* [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog): a
|
||||
set of tools for parsing conventional commit messages from git histories.
|
||||
* [unleash](https://github.com/netflix/unleash): a tool for automating the
|
||||
software release and publishing lifecycle.
|
||||
* [lerna](https://github.com/lerna/lerna): a tool for managing monorepos, which grew out
|
||||
of the Babel project.
|
||||
|
||||
## Projects Using Conventional Commits
|
||||
|
||||
* [yargs](https://github.com/yargs/yargs): everyone's favorite pirate themed command line argument parser.
|
||||
* [istanbuljs](https://github.com/istanbuljs/istanbuljs): a collection of open-source tools
|
||||
and libraries for adding test coverage to your JavaScript tests.
|
||||
* [standard-version](https://github.com/conventional-changelog/standard-version): Automatic versioning and CHANGELOG management, using GitHub's new squash button and the recommended Conventional Commits workflow.
|
||||
|
||||
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)
|
||||
|
||||
_want your project on this list?_ [send a pull request](https://github.com/conventional-changelog/conventionalcommits.org/pulls).
|
||||
|
||||
## License
|
||||
|
||||
[Creative Commons - CC BY 3.0](http://creativecommons.org/licenses/by/3.0/)
|
Loading…
Reference in New Issue
Block a user