mirror of
https://github.com/conventional-commits/conventionalcommits.org.git
synced 2024-11-15 10:55:16 +01:00
242 lines
18 KiB
Markdown
242 lines
18 KiB
Markdown
|
---
|
|||
|
draft: false
|
|||
|
aliases: ["/be/"]
|
|||
|
---
|
|||
|
|
|||
|
# Пагадненне аб камітах 1.0.0
|
|||
|
|
|||
|
## Сціслы агляд
|
|||
|
|
|||
|
Спецыфікацыя па дадаванню лёгкачытэльных паведамленняў у камітах для людзей і робатаў.
|
|||
|
Яно апісвае просты набор правілаў для стварэння зразумелай гісторыі камітаў, а таксама
|
|||
|
дазваляе прасцей распрацоўваць прылады
|
|||
|
аўтаматызацыі, заснаваныя на гісторыі камітаў. Дадзенае пагадненне сумяшчальна з
|
|||
|
[Семантычным Версіянаваннем](https://semver.org/), апісваючы новыя функцыі, выпраўленні і
|
|||
|
змяненні, парушаючыя адваротную сумяшчальнасць паведамленняў камітаў.
|
|||
|
|
|||
|
Паведамленні камітаў павінны быць наступнай структуры:
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
```
|
|||
|
<тып>[неабавязковы кантэкст]: <апісанне>
|
|||
|
|
|||
|
[неабавязковае цела]
|
|||
|
|
|||
|
[неабавязковая(ыя) зноска(і)]
|
|||
|
```
|
|||
|
---
|
|||
|
|
|||
|
<br />
|
|||
|
Каміт змяшчае наступныя структурныя элементы для перадачы намераў
|
|||
|
карыстыльнікаў вашай бібліятэкі:
|
|||
|
|
|||
|
1. **fix:** каміт _тыпу_ `fix` выпраўляе баг у вашам кодзе (адпавядае
|
|||
|
[`PATCH`](https://semver.org/#summary) у Семантычным Версіянаванні).
|
|||
|
1. **feat:** каміт _тыпу_ `feat` дадае новую функцыю ў ваш код
|
|||
|
(адпавядае [`MINOR`](https://semver.org/#summary) у Семантычным Версіянаванні).
|
|||
|
1. **BREAKING CHANGE:** каміт, які мае _зноску_ `BREAKING CHANGE` або
|
|||
|
каміт, які скончваецца клічнікам (`!`) пасля _тыпу_ ці
|
|||
|
_кантэксту_, уводзячы змяненне(і), парушаючыя адваротную сумяшчальнасць
|
|||
|
(адпавядае [`MAJOR`](https://semver.org/#summary) у Семантычным Версіянаванні).
|
|||
|
`BREAKING CHANGE` можа быць часткай каміту любога _тыпу_.
|
|||
|
1. Іншыя _тыпы_ камітаў дазволены. Напрыклад,
|
|||
|
[@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional) (заснаваны
|
|||
|
на [пагадненні Angular](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines)) рэкамендуе `build`, `chore`,
|
|||
|
`ci`, `docs`, `style`, `refactor`, `perf`, `test` і іншыя.
|
|||
|
1. Іншыя _зноскі_ камітаў могуць быць аналягічны паведамленню [git trailer format](https://git-scm.com/docs/git-interpret-trailers).
|
|||
|
|
|||
|
Дадатковыя _тыпы_ не патрабуюцца «Пагадненню аб камітах» і ня маюць невідавочнага
|
|||
|
эфекту ў семантычным версіянаванні (калі толькі яны не ўключаюць
|
|||
|
`BREAKING CHANGE`).
|
|||
|
<br /><br />
|
|||
|
_Кантэкст_ можа быць дададзены да _тыпу_ каміту, каб даць
|
|||
|
дадатковую кантэкстную інфармацыю; яна трываецца ў дужках. Напрыклад,
|
|||
|
`feat(parser): add ability to parse arrays`.
|
|||
|
|
|||
|
## Прыклады
|
|||
|
|
|||
|
### Паведамленне каміту з _апісаннем_ і _зноскай_ `BREAKING CHANGE`
|
|||
|
```
|
|||
|
feat: allow provided config object to extend other configs
|
|||
|
|
|||
|
BREAKING CHANGE: `extends` key in config file is now used for extending other config files
|
|||
|
```
|
|||
|
|
|||
|
### Паведамленне каміту з `!` для звяртання ўвагі на `BREAKING CHANGE`
|
|||
|
```
|
|||
|
feat!: send an email to the customer when a product is shipped
|
|||
|
```
|
|||
|
|
|||
|
### Паведамленне каміту з _кантэкстам_ і `!` для звяртання ўвагі на `BREAKING CHANGE`
|
|||
|
```
|
|||
|
feat(api)!: send an email to the customer when a product is shipped
|
|||
|
```
|
|||
|
|
|||
|
### Паведамленне каміту разам з `!` і _зноскай_ `BREAKING CHANGE`
|
|||
|
```
|
|||
|
chore!: drop support for Node 6
|
|||
|
|
|||
|
BREAKING CHANGE: use JavaScript features not available in Node 6.
|
|||
|
```
|
|||
|
|
|||
|
### Паведамленне каміту бяз _цела_
|
|||
|
```
|
|||
|
docs: correct spelling of CHANGELOG
|
|||
|
```
|
|||
|
|
|||
|
### Паведамленне каміту з _кантэкстам_
|
|||
|
```
|
|||
|
feat(lang): add polish language
|
|||
|
```
|
|||
|
|
|||
|
### Паведамленне каміту с _целам_ з некалькіх абзацаў і некалькімі _зноскамі_
|
|||
|
```
|
|||
|
fix: prevent racing of requests
|
|||
|
|
|||
|
Introduce a request id and a reference to latest request. Dismiss
|
|||
|
incoming responses other than from latest request.
|
|||
|
|
|||
|
Remove timeouts which were used to mitigate the racing issue but are
|
|||
|
obsolete now.
|
|||
|
|
|||
|
Reviewed-by: Z
|
|||
|
Refs: #123
|
|||
|
```
|
|||
|
|
|||
|
## Поўная Спецыфікацыя
|
|||
|
|
|||
|
Словы «MUST», «MUST NOT», «REQUIRED», «SHALL», «MAY» и «OPTIONAL» у дадзенам
|
|||
|
дакуменце павінна тлумачыцца як у [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt).
|
|||
|
|
|||
|
1. Каміты павінны (MUST) пачынацца з _тыпу_, які з'яўляецца назоўнікам:
|
|||
|
`feat`, `fix` і г.д. За ім ідзе неабавязковы (OPTIONAL) _кантэкст_,
|
|||
|
неабавязковы (OPTIONAL) клічнік (`!`) і абавязковае
|
|||
|
(REQUIRED) двукроп'е (`:`) і прабел (` `).
|
|||
|
1. _Тып_ `feat` павінны (MUST) выкарыстоўвацца, калі каміт дадае новы
|
|||
|
функцыянал у ваша прыкладанне або вашу бібліятэку.
|
|||
|
1. _Тып_ `fix` павінны (MUST) выкарыстоўвацца, калі каміт выпраўляе баг у
|
|||
|
вашам прыкладанні ці ў вашай бібліятэцы.
|
|||
|
1. _Кантэкст_ можа (MAY) ісці пасля _тыпу_. _Кантэкст_ павінны (MUST)
|
|||
|
быць назоўнікам, заключаным у круглыя дужкі, апісваючы частку
|
|||
|
кодавай базы, якую закрануў каміт. Напрыклад, `fix(parser)`.
|
|||
|
1. _Апісанне_ павінна (MUST) ісці адразу пасля двукроп'я (`:`) і з прабелам
|
|||
|
(` `) пасля _тыпу_ або _кантэксту_. _Апісанне_ ўяўляе сабой сціслае выкладанне змен коду. Напрыклад, `fix: array parsing issue when multiple
|
|||
|
spaces were contained in string`.
|
|||
|
1. _Цела_ каміту можа (MAY) ісці пасля сціслага _апісання_, дадаючы дадатковую кантэкстную інфармацыю пра змены ў кодзе. _Цела_ павінна
|
|||
|
(MUST) аддзяляцца ад _апісання_ адным пустым радком.
|
|||
|
1. _Цела_ каміту мае самавольную форму и можа (MAY) складацца з любой колькасці абзацаў, падзеленых новым радком.
|
|||
|
1. У адной ці некалькіх _зносках_ можа (MAY) быць адзін пусты радок пасля
|
|||
|
_цела_. Кожная _зноска_ павінна (MUST) складацца з токена слову, за якім
|
|||
|
ідзе раздзяляльнік `:<прабел>` ці `<прабел>#`, за якім ідзе
|
|||
|
радковае значэнне (заснавана на [git trailer format](https://git-scm.com/docs/git-interpret-trailers)).
|
|||
|
1. Токен _зноскі_ павінны (MUST) карыстаць `-` замест прабельных сымбаляў.
|
|||
|
Напрыклад, `Acked-by` (гэта дапамагае адрозніць раздзел _зноскі_ ад яго _цела_,
|
|||
|
складаючагася з некалькіх абзацаў). Выключэнне складае `BREAKING CHANGE`,
|
|||
|
якое можа (MAY) таксама выкарыстоўвацца як токен.
|
|||
|
1. _Зноска_ можа (MAY) змяшчаць прабелы і сымбалі новага радку, а счытванне
|
|||
|
павінна (MUST) завяршацца пры выяўленні наступнай дапушчальнай пары
|
|||
|
токен-раздзяляльнік _зноскі_.
|
|||
|
1. Крытычныя змяненні павінны (MUST) быць указаны ў _тыпу_, _кантэксту_ або
|
|||
|
_зносцы_ каміту.
|
|||
|
1. Калі `BREAKING CHANGE` уключана ў _зноску_, то яно павінна (MUST) спалучацца з
|
|||
|
вялікіх літар ў тэксце `BREAKING CHANGE`, за якім ідзе двукроп'е (`:`),
|
|||
|
прабел (` `) і _апісанне_. Напрыклад, `BREAKING CHANGE: environment
|
|||
|
variables now take precedence over config files`.
|
|||
|
1. Калі крытычныя змяненні знаходзяцца ў _тыпу_ або _кантэксту_, то яны павінны
|
|||
|
(MUST) быць пазначаны клічнікам (`!`), непасрэдна перад двукроп'ем (`:`). Калі выкарыстоўваецца клічнік (`!`), то
|
|||
|
`BREAKING CHANGE` можа (MAY) быць апушчаны ў _зносцы_, а _апісанне_ каміту павінна (SHALL) выкарыстоўвацца для апісання крытычнага змянення.
|
|||
|
1. У вашых паведамленнях камітаў могуць (MAY) выкарыстоўвацца _тыпы_, адменныя ад
|
|||
|
`feat` і `fix`. Напрыклад, `docs: updated ref docs`.
|
|||
|
1. Адзінкі інфармацыі, якія складаюць «Пагадненне аб камітах», не павінны
|
|||
|
(MUST NOT) апрацоўвацца распрацоўнікамі як адчувальныя да рэгістру, за
|
|||
|
выключэннем `BREAKING CHANGE`, каторае павінна (MUST) пісацца вялікімі літарамі.
|
|||
|
1. `BREAKING-CHANGE` павінны (MUST) быць сінонімам `BREAKING CHANGE` пры
|
|||
|
выкарыстоўванні ў якасці токена ў _зносцы_.
|
|||
|
|
|||
|
## Навошта выкарыстоўваць «Пагадненне аб камітах»
|
|||
|
|
|||
|
* Аўтаматычнае стварэнне спісаў змяненняў.
|
|||
|
* Аўтаматычнае вызначэнне семантычнага павышэння версіі (на падставе _тыпаў_
|
|||
|
здзейсненых камітаў).
|
|||
|
* Інфармаванне сябраў па камандзе, супольнасці і іншых зацікаўленых старон аб характары змяненняў.
|
|||
|
* Запуск працэсаў зборкі і публікацыі.
|
|||
|
* Спрасціце людзям удзел у вашых праектах, дазволіўшы ім вывучаць больш
|
|||
|
структураваную гісторыі камітаў.
|
|||
|
|
|||
|
## FAQ (часта задаваныя пытанні)
|
|||
|
|
|||
|
### Як мне абысціся з паведамленнямі камітаў на пачатковым этапе распрацоўкі?
|
|||
|
|
|||
|
Мы раім дзейнічаць так, быццам бы вы ўжо выпусцілі прадукт. Звычайна
|
|||
|
*хтосьці*, нават калі то вашыя калегі-распрацоўнікі праграмнага забеспячэння,
|
|||
|
карыстаецца вашым праграмным забеспячэннем. Яны пажадаюць ведаць, што выпраўлена,
|
|||
|
што ламаецца і г.д.
|
|||
|
|
|||
|
### _Тыпы_ ў загалоўку каміту павінны пісацца вялікімі ці маленікімі літарамі?
|
|||
|
|
|||
|
Выбярыце той, які вам больш падабаецца, і строга яго прытрымлівайцеся.
|
|||
|
|
|||
|
### Што мне рабіць, калі каміт адпавядае больш чым аднаму _тыпу_?
|
|||
|
|
|||
|
Па магчымасці вярніцеся назад і зрабіце некалькі камітаў. Часткай
|
|||
|
перавагі «Пагаднення аб камітах» з'яўляецца здольнасць заахвочваць нас рабіць
|
|||
|
больш арганізаваныя каміты і PRs (pull requests, ці
|
|||
|
запыты на запросы на выцягванне).
|
|||
|
|
|||
|
### Хіба то не перашкаджае інтэнсіўнай распрацоўцы і хуткай ітэрацыі?
|
|||
|
|
|||
|
Гэта перашкаджае хуткаму неарганізаванаму руху. Гэта дапаможа вам хутка прасоўвацца ў доўгатэрміновай перспектыве ў некалькіх праектах з рознымі ўдзельнікамі.
|
|||
|
|
|||
|
### Ці можа «Пагадненне аб камітах» прывесці распрацоўнікаў да абмежавання _тыпаў_ здзейсненых імі камітаў, таму што яны будуць думаць у адпаведнасці з дазволенымі _тыпамі_?
|
|||
|
|
|||
|
«Пагадненне аб камітах» схіляе нас рабіць больш вызначаных _тыпаў_
|
|||
|
камітаў, такіх, як `fix`. Акрамя гэтага, гібкасць «Пагаднення аб камітах»
|
|||
|
дазваляе вашай камандзе прыдумваць свае асабістыя _тыпы_ і з цягам часу змяняць іх.
|
|||
|
|
|||
|
### Як гэта звязана з Семантычным Версіянаваннем?
|
|||
|
|
|||
|
Каміты _тыпу_ `fix` павінны быць пераведзены ў выпускі `PATCH`, `feat` — у
|
|||
|
`MINOR`, `BREAKING CHANGE`, незалежна ад _тыпу_, — у `MAJOR`.
|
|||
|
|
|||
|
### Як мне давесці свае расшырэнні да спецыфікацыі «Пагадненне аб камітах». Напрыклад, `@jameswomack/standard-commit-spec`?
|
|||
|
|
|||
|
Мы раім выкарыстоўваць Семантычнае Версіянаванне для выпуску
|
|||
|
вашых уласных расшырэнняў для гэтай спецыфікацыі (і заклікаем вас ствараць гэтыя расшырэнні!).
|
|||
|
|
|||
|
### Што мне рабіць, калі я выпадкова скарыстаў няправільны _тып_ каміту?
|
|||
|
|
|||
|
#### Калі вы скарысталі няправільны _тып_, але адпаведны спецыфікацыі. Напрыклад, `fix` замест `feat`
|
|||
|
|
|||
|
Перад аб'яднаннем або выпускам памылкі мы раім выкарыстоўваць `git rebase
|
|||
|
-i` для рэдагавання гісторыі камітаў. Пасля выпуску рэдагаванне будзе адрознівацца ў залежнасці ад таго, якія прылады і працэсы вы выкарыстоўваеце.
|
|||
|
|
|||
|
#### Калі вы скарысталі _тып_, не прызначаны у спецыфікацыі. Напрыклад, `feet` замест `feat`
|
|||
|
|
|||
|
У горшым выпадку гэта ўсё яшчэ не канец свету, калі каміт не адпавядае
|
|||
|
спецыфікацыі «Пагаднення аб камітах». Гэта проста азначае, што каміт будзе прапушчаны прыладамі, заснаванымі на спецыфікацыі.
|
|||
|
|
|||
|
### Ці ўсе мае ўдзельнікі павінны карыстацца спецыфікацыяй «Пагаднення аб камітах»?
|
|||
|
|
|||
|
Не! Калі вы выкарыстоўваеце рабочы працэс на падставе з'яднання (squash)
|
|||
|
камітаў у Git, то вядучыя спецыялісты па суправаджэнню могуць прывесці ў парадак паведамленні камітаў па меры іх зліцця (merge), не дадаючы нагрузкі для звычайных камітараў. Звычайны рабочы працэс для гэтага і заключаецца ў тым, каб ваша сістэма Git аўтаматычна з'яднала каміты з PR і прывяла форму для
|
|||
|
вядучага суправаджаючага, каб увесці найбольш падыходзячае паведамленне для зліцця.
|
|||
|
|
|||
|
### Як «Пагадненне аб камітах» апрацоўвае скасаванне камітаў?
|
|||
|
|
|||
|
Скасаванне змяненняў коду можа быць складаным:
|
|||
|
- Вы скасоўваеце змяненні некалькіх камітаў?
|
|||
|
- Калі вы скасоўваеце змяненні новых функцый, ці павінны наступны выпуск быць
|
|||
|
патчам?
|
|||
|
|
|||
|
«Пагадненне аб камітах» ня робіць яўных спробаў вызначыць паводзіны скасавання змен. Замест гэтага мы пакідаем аўтарам прылад выкарыстоўваць гібкасць _тыпаў_ і _зносак_ для распрацоўкі сваёй лёгікі і для апрацоўкі скасавання змен.
|
|||
|
|
|||
|
Адна з парад — выкарыстоўваць _тып_ `revert` і _зноску_, якая
|
|||
|
спасылаецца на касаваныя хэш-сумы камітаў. Напрыклад:
|
|||
|
|
|||
|
```
|
|||
|
revert: let us never again speak of the noodle incident
|
|||
|
|
|||
|
Refs: 676104e, a215868
|
|||
|
```
|