conventionalcommits.org/content/v1.0.0-beta.3/index.hy.md
2019-09-07 14:42:50 +02:00

278 lines
19 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
draft: false
aliases: ["/hy/"]
---
# Համաձայնեցված «Commit»֊ներ 1.0.0-beta.3
## Համառոտագիր
Համաձայնեցված «commit»֊ների սպեցիֆիկացիան կանոնների խումբ է «commit»
մեսիջների վերաբերյալ։ Այն առաջարկում է պարզ կանոններ և պահանջներ, որոնց միջոոցով
հնարավոր է ստանալ հասկանալի և ընթեռնելի «commit»֊ների պատմություն, և հեշտացնել
ավտոմատացված ծրագրային ապահովման ստեղծումը, որոնք աշխատում են «commit» մեսիջների
հիման վրա։ Այս կանոնները ուղիղ կապ ունեն
[SemVer](http://semver.org/#summary)֊ի սպեցիֆիկացիայի հետ, և օգատգործվում են նոր
ֆունցիոնալի ինտեգրման (features), սխալների ուղղումների (fixes) և հետ
համատեղելիությունը խախտող փոփոխությունների (bracking changes) մասին «commit»
մեսիջներում տեղելացնելու համար։
«commit» մեսիջները պետք է ունենան հետևյալ կառուցվածքը՝
---
```
<տեսակ (type)>[ոչ պարտադիր կոնտեքստ (optional scope)]: <բացատրություն (description)>
[ոչ պարտադիր մարմին (optional body)]
[ոչ պարտադիր ներքևի հատված (optional footer)]
```
---
«commit»֊ները պարունակում են հետևյալ ստրուկտուրալ էլեմենտները, որոնց միջոցով ձեր
ծրագրային ապահովման օգտագործողները կարող են հասկանալ ինչ է տեղի ունեցել
«commit»֊ների արդյունքում՝
1. **fix։** `fix` _ՏԵՍԱԿԻ_ «commit»֊ները նախատեված են սխալների ուղղումների (bug
fix) մասին տեղեկացնելու համար (այն փոխկապակցված է սեմանտիկ տարբերակման մեջ
ներկայացված [`«ՓԱԹՉ»`](http://semver.org/#summary)֊ի հետ)։
2. **feat։** `feat` _ՏԵՍԱԿԻ_ «commit»֊ները նախատեված են նոր
ֆունկցիոնալի ինտեգրման մասին տեղեկացնելու համար (այն փոխկապակցված է սեմանտիկ
տարբերակման մեջ ներկայացված [`«ՄԻՆՈՐ»`](http://semver.org/#summary)֊ի հետ)։
3. **BREAKING CHANGE։** `BREAKING CHANGE։` պարունակող «commit»֊ները
(_ՄԱՐՄՆՈՒՄ_ կամ _ՆԵՐՔԵՎԻ ՀԱՏՎԱԾՈՒՄ_ ) տեղեկացնում են API֊ում արված փոփոխության
մասին, որը խախտում է հետ համատեղելիությունը (breaking changes) (այն փոխկապակցված
է սեմանտիկ տարբերակման մեջ ներկայացված [`ՄԱԺՈՐ`](http://semver.org/#summary)֊ի
հետ), `BREAKING CHANGE:`֊ը կարող է հանդիպել կամայական _ՏԵՍԱԿԻ_ «commit»֊ների հետ:
4. Ուրիշ տեսակներ. կարելի է օգտագործել նաև վերը նշվածներից տարբերվող
_ՏԵՍԱԿ_ ունեցող (`fix:` և `feat:`) «commit»֊ներ, օրինակ՝
[@commitlint-config-conventional](https://github.com/marionebl/commitlint/tree/master/%40commitlint/config-conventional)֊ը
(հիմնված է [Angular convention](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines)֊ի վրա)
առաջարկում է օգագործել են նաև՝ `chore:`, `docs:`, `style:`, `refactor:`,
`perf:`, `test:` և այլ _ՏԵՍԱԿԻ_ «commit»֊ներ։
Մենք նաև առաջարկում ենք օգագործել `improvement`, այն _ՏԵՍԱԿԻ_ «commit»֊ների
համար, որոնք բարելավում են գործող իմպլեմենտացիան առանց նոր ֆունկցիոնալի
ինտեգրման և սխալների ուղղման։ Ուշադրություն դարձրեք, որ «commit»֊ների այս
_ՏԵՍԱԿՆԵՐԸ_ չեն հանդիսանում համաձայնեցված «commit»֊ների սպեցիֆիկացիայի մաս և ոչ
մի ձևով փոխկապակցված չեն սեմանտիկ տարբերակման սպեցիֆիկացիայի հետ (բացառություն
են հանդիսանում `BREAKING CHANGE:` պարունակող «commit»֊ները)։
_ԿՈՆՏԵՔՍՏ_ կարող է ավելացվել «commit»֊ի _ՏԵՍԱԿԻՆ_ ՝ «commit»-ի կոնտեքստ
սահմանելու նպատակով։ _ԿՈՆՏԵՔՍՏԸ_ պետք է լինի փակագծերի մեջ օրինակ՝
`feat(parser): add ability to parse arrays`։
## Օրինակներ
### «commit», որը ունի _ԲԱՑԱՏՐՈՒԹՅՈՒՆ_ և _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
```
### «commit», որը չունի _ՄԱՐՄԻՆ_
```
docs: correct spelling of CHANGELOG
```
### «commit», որը ունի _ԿՈՆՏԵՔՍՏ_
```
feat(lang): add polish language
```
### «commit», սխալի ուղղման համար, որը պարունակում է առաջադրանքի (issue) համարը
```
fix: correct minor typos in code
see the issue for details on the typos fixed
closes issue #12
```
## Սպեցիֆիկացիա
Նշված բառերը՝ «ՊԵՏՔ Է» (MUST, SHALL), «ՉՊԵՏՔ Է» (MUST NOT, SHALL NOT),
«ՊԱՐՏԱԴԻՐ» (REQUIRED), «ԱՆՀՐԱԺԵՇՏ Է» (SHOULD), «ԱՆՀՐԱԺԵՇՏ ՉԷ» (SHOULD NOT),
«ԽՈՐՀՈՒՐԴ Է ՏՐՎՈՒՄ» (RECOMMENDED), «ԿԱՐՈՂ Է» (MAY) և «ՈՉ ՊԱՐՏԱԴԻՐ» (OPTIONAL)
պետք է ինտերպրիտացվեն [RFC 2119](http://tools.ietf.org/html/rfc2119) ստանդարտին
համապատասխան։
1. «commit» մեսիջները ՊԵՏՔ Է (MUST) սկսվեն _ՏԵՍԱԿԻ_ (type) մասին նշումով, որը
գոյական է (noun) և բաղկացած է լինում մեկ բառից՝ օրինակ՝ `feat`, `fix`, և այլն։
Դրան հետևում է վերջակետի նշանը և բացատը։
2. `feat` _ՏԵՍԱԿԸ_ ՊԵՏՔ Է (MUST) օգտագործվի, երբ «commit»֊ի արդյունքում տեղի է
ունենում նոր ֆունցիոնալի իմպլեմենտացիա ձեր ծրագրում կամ գրադարանում։
3. `fix` _ՏԵՍԱԿԸ_ ՊԵՏՔ Է (MUST) օգտագործվի, երբ «commit»֊ի արդյունքում տեղի է
ունենում սխալի ուղղում ձեր ծրագրում։
4. _ԿՈՆՏԵՔՍՏԸ_ ԿԱՐՈՂ Է (MAY) ավելացվել _ՏԵՍԱԿԻՑ_ անմիջապես հետո։ _ԿՈՆՏԵՔՍՏԸ_
ՊԵՏՔ Է (MUST) գոյական լինի պարփակված փակագծերի մեջ, և նկարագրի կոդի այն հատվածը,
որի վրա անդրադարձել է «commit»֊ը։ Օրինակ՝ `fix(parser): `։
5. _ԲԱՑԱՏՐՈՒԹՅՈՒՆԸ_ (description) ՊԵՏՔ Է (MUST) լինի անմիջապես
_ՏԵՍԱԿ/ԿՈՆՏԵՔՍՏ_-ին հետևող բացատից հետո։ _ԲԱՑԱՏՐՈՒԹՅՈՒՆԸ_ համառոտ ներկայանում է
կոդում եղած փոփոխությունները։ Օրինակ՝
`fix: array parsing issue when multiple spaces were contained in string`։
6. _ՄԱՐՄԻՆԸ_ (body) ԿԱՐՈՂ Է (MAY) հետևել կարճ _ԲԱՑԱՏՐՈՒԹՅԱՆԸ_ և ավելի մեծ
ինֆորմացիա տրամադրել կոդում եղած փոփոխությունների մասին։ _ՄԱՐՄԻՆԸ_ ՊԵՏՔ Է (MUST)
առանձնացվի _ԲԱՑԱՏՐՈՒԹՅՈՒՆԻՑ_ մեկ դատարկ տողով։
7. _ՆԵՐՔԵՎԻ ՀԱՏՎԱԾԸ_ (footer) ԿԱՐՈՂ Է (MAY) լինել մեկ կամ մի քանի տողի տեսքով
_ՄԱՐՄՆԻՑ_ անմիջապես հետո և պետք է անջատված լինի _ՄԱՐՄՆԻՑ_ մեկ դատարկ տողով։
_ՆԵՐՔԵՎԻ ՀԱՏՎԱԾԸ_ ՊԵՏՔ Է (MUST) պարունակի մետա֊ինֆորմացիա «commit»֊ի մասին,
(օրինակ `Fixes #13`):
8. Հետ համատեղելիությունը խախտող փոփոխությունները ՊԵՏՔ Է (MUST) պիտակավորվեն
_ՄԱՐՄԻՆԻ_ կամ _ՆԵՐՔԵՎԻ ՀԱՏՎԱԾԻ_ սկզբում։ Հետ համատեղելիությունը խախտող
փոփոխությունները ՊԵՏՔ Է (MUST) պիտակավորվեն այս արտահայտությամբ՝ BREAKING CHANGE
(պարտադիր մեծատառերով), որին հետևում է վերջակետ և բացատ։
9. Հետ համատեղելիությունը խախտող փոփոխությունների նկարագիրը (ինչ է փոխվել
API-ում) ՊԵՏՔ Է (MUST) հետևեն `BREAKING CHANGE: ` պիտակին։ Օրինակ՝
`BREAKING CHANGE: environment variables now take precedence over config files.`։
10. _ՆԵՐՔԵՎԻ ՀԱՏՎԱԾԻ_ ՊԵՏՔ Է (MUST) միայն պարունակի `BREAKING CHANGE`, արտաքին
հղումներ, խնդրի մասին նշումներ և այլ մետատվյալներ։
11. «commit»-ների _ՏԵՍԱԿՆԵՐԸ_ ԿԱՐՈՂ ԵՆ (MAY) լինել `feat`֊ից և `fix`֊ից տարբեր։
## Ի՞նչու օգտագործել Համաձայնեցված «Commit»֊ներ
* Փոփոխությունների լոգերի (CHANGELOG) ավտոմատ գեներացում։
* Սեմանտիկ տարբերակի ավտոմատ որոշում «commit»֊ի հիման վրա։
* Տեղեկացնել փոփոխությունների բնույթի մասին թիմի անդամներին, հասարակությանը և
հետաքրքրված անձանց։
* Ավտոմատացնել կառուցման (build) և հրապարակման (publish) պրոցեսները։
* Հեշտացնում է նոր մասնակիցների ինտեգրումը ձեր նախագծին, հասանելի և
ստրուկտուրիզացված «commit»֊ների պատմության շնորհիվ։
## ՀՏՀ
### Ի՞նչպես գրել «commit» մեսիջները աշխատանքի նախնական փուլերում (initial development phase):
Խորհուրդ է տրվում գրել մեսիջներն այնպես, կարծես դուք արդեն հրապարակել եք
պրոդուկտը։ _Որևէ մեկին_ ՝ օրինակ ձեր գործընկերներին կարող է հետաքրքիր լինել, թե
ինչն է փոխվել, և ինչ նոր հետ համատեղելիությունը խախտող փոփոխություններ են եղել։
### Ի՞նչ անել, եթե «commit»֊ը ունի ավելի քան մեկ _ՏԵՍԱԿ_։
Եթե հնարավոր է արեք իմ քանի «commit»։ Համաձայնեցված «commit»֊ների հիմնական
առավելություններից մեկը՝ ավելի կազմակերպված «commit»֊ների և «PR»֊ների թողարկումն է։
### Արդյո՞ք աշխատելու այս ձևը չի խանգարում արագ ծրագրավորմանը (rapid development) և արագ իտերացիաներին (fast iteration)։
Այս եղանակը խանգարում է ոչ կազմակերպված արագ աշխատանքին։ Դրա փոխարեն դուք արագ
եք շարժվում երկարաժամկետ տեսլականով, մի քանի պրոյեկտի մասշտաբով և մի քանի
մասնակիցներ առկայությամբ։
### Արդյո՞ք համաձայնեցված «commit»֊ների _ՏԵՍԱԿՆԵՐԸ_ չեն սահմանափակի ծրագրավորողներին, քանի որ նրանք պետք է մտածեն տրամադրված _ՏԵՍԱԿՆԵՐԻ_ սահմաններում։
Համաձայնեցված «Commit»֊ների սպեցիֆիկացիան խրախուսում է այլ _ՏԵՍԱԿԻ_ «commit»֊ների
օգտագործումը։ Ձեր թիմը կարող է ազատ լինել իր սեփական _ՏԵՍԱԿՆԵՐԻ_ ստեղծման մեջ և
փոփոխել դրանք ժամանակի ընթացքում։
### Ի՞նչ կապ ունի այս ամենը տարբերակման սեմանտիկ կանոնների՝ SemVer֊ի հետ։
`fix` _ՏԵՍԱԿԻ_ «commit»֊ները թողարկվում են, որպես ՓԱԹՉ. `feat` _ՏԵՍԱԿԻ_
«commit»֊ները թողարկվում են, որպես ՄԻՆՈՐ. `BREAKING CHANGE` պարունակող կամայական
«commit», _ՏԵՍԱԿԻՑ_ անկախ, թողարկվում է, որպես ՄԱԺՈՐ։
### Ինչպե՞ս է պետք տարբերակել համաձայնեցված «commit»֊ների սպեցիֆիկացիայի հիման վրա ստեղծված իմ սեփական հավելվածերը, օրինակ՝ `@jameswomack/conventional-commit-spec`
Համաձայնեցված «commit»֊ների սպեցիֆիկացիայի հիման վրա ձեր հավելվածները ստեղծելիս
և թողարկելիս, խորհուրդ է տրվում օգտվել՝ [`SemVer`](http://semver.org/#summary)֊ից։
(Մենք խրախուսում ենք հավելվածների ստեղծումը)։
### Ինչ ես պետք է անեմ, երբ սխալմամբ «commit»֊ի սխալ _ՏԵՍԱԿ_ եմ օգտագործել։
#### Եթե ծեր օգտագործած _ՏԵՍԱԿԸ_ առկա է սպեցիֆիկացիայում, բայց այն սխալ է, օրինակ `fix`՝ `feat`֊ի փոխարեն։
Մինչ ձեր սխալը «mergе» անելը, կամ թողարկելը, խորհուրդ է տրվում օգտագործել
`git rebase -i` և փոփոխել commit»֊ների պատմությունը։ Թողարկելուց հետո, ուղղելու
եղանակները տարբեր են՝ կախված նրանից թե ինչ գործիքներից եք դուք օգտվում։
#### Եթե ձեր օգտագործած _ՏԵՍԱԿԸ_ առկա չէ սպեցիֆիկացիայում, օրինակ `feet`՝ `feat`֊ի փոխարեն։
Դա ամենևին էլ աշխարհի վերջը չէ։ Դա ուղղակի կնշանակի, որ ձեր սպեցիֆիկացիայի հիման վրա աշխատող գործիքներրը կանտեսեն այդ «commit»֊ը։
### Իմ բոլոր գործընկերները նույնպե՞ս պետք է հետևեն համաձայնեցված «commit»֊ների սպեցիֆիկացիային։
Ոչ․ եթե ձեր աշխատանքային պրոցեսը հիմնված է «squash»֊երի վրա՝ նախագծի ղեկավարը
կարող է մաքրել պատմությունը մինչև «mergе» անելը և ուշադրություն չդարձնել այդ ամենին։
Սովորաբար git֊ը ավտոմատ «squash» է անում «commit»֊ները PR֊ի ժամանակ և վերջին
«commit»֊ը անում է նախագծի ղեկավարը։
## Սպեցիֆիկացիայի Մասին
Համաձայնեցված «commit»֊ների սպեցիֆիկացիան ոգեշնչված է և ստեղծված
[Angular Commit Guidelines](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit)֊ի
հիման վրա։
Առաջին սևագիրը ստեղծվել է մի քանի մասնակիցների օգնությամբ։
* [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog)
գործիքների խումբ է, git֊ի պատմությունից hամաձայնեցված «commit»֊ները
առանձնացնելու համար։
* [parse-commit-message](https://github.com/olstenlarck/parse-commit-message)
ծրագիր է, որը «commit»֊ից առանձնացնում է
`{ header: { type, scope, subject }, body, footer }` օբյեկտ:
* [bumped](https://bumped.github.io/) գործիք է, որի միջոցով կարելի է, որոշակի
գործողություններ կատարել ծրագրային ապահովումը հրապարակելուց առաջ կամ հետո։
* [unleash](https://github.com/netflix/unleash) գործիք, որը ավտոմատացնում է
ծրագրերի թողարկումը և հրապարակումը։
* [lerna](https://github.com/lerna/lerna) մոնո֊ռեպոզիտորիաների կառավարման
գործիք է, որը ստեղծվել է Babel֊ի հիման վրա։
## Գործիքներ՝ համածայնեցված «commit»֊ների համար
* [php-commitizen](https://github.com/damianopetrungaro/php-commitizen) գործիք,
որի միջոցով կարելի է ստեղծել «commit»֊ներ՝ համաձայնեցված «commit»֊ների
սպեցիֆիկացիային համաձայն։ Կարելի է օգտագործել PHP֊ով իրականացվող նախագծերում,
կամ առանձին։
* [conform](https://github.com/autonomy/conform) այս գործիքի միջոցով կարելի է
կազմակերպել կանոններ git ռեպոզիտորիաների համար, օրինակ համաձայնեցված
«commit»֊ների հիման վրա։
## Նախագծեր, որոնք օգտագործում են Համաձայնեցված «Commit»֊ներ
* [yargs](https://github.com/yargs/yargs) Բոլոր կողմից սիրված «command line»
արգումենտներ առանձնացնելու գործիք (parser)։
* [istanbuljs](https://github.com/istanbuljs/istanbuljs) Բաց կոդով գրադարանների
և գործիքների խումբ է, ձեր «JavaScript»֊ով ստեղծված ծրագրային ապահովման տեստերի
ընդգրկելիությունը որոշելու համար։
* [standard-version](https://github.com/conventional-changelog/standard-version):
Ավտոմատ տարբերակման և փոփոխությունների լոգի ստեղծում համաձայնեցված «commit»֊ների
հիման վրա։
* [uPortal-home](https://github.com/UW-Madison-DoIT/angularjs-portal) և
[uPortal-application-framework](https://github.com/UW-Madison-DoIT/uw-frame)
[Apereo uPortal](https://www.apereo.org/projects/uportal)֊ի համար նախատեսված
UI֊ը բարելավելու գործիքներ։
* [massive.js](https://github.com/dmfay/massive-js) Տվյալների հետ աշխատելու
համար նախատեսված գրադարան Node֊ի և PostgreSQL֊ի համար։
* [electron](https://github.com/electron/electron) Քրոս֊պլատֆորմ, համակարգչային
ծրագրերի ստեղծման համար JavaScript, HTML, և CSS֊ով։
* [scroll-utility](https://github.com/LeDDGroup/scroll-utility) Անիմացիաների և
էլեմենտները տեղակայելու համար նախատեսված գործիք։
* [Blaze UI](https://github.com/BlazeUI/blaze) UI հավաքելու գործիք։
* [Monica](https://github.com/monicahq/monica): An open source personal
relationship management system.
* [mhy](https://mhy.js.org): A zero-config, out-of-the-box, multi-purpose
toolbox and development environment.
[![Համաձայնեցված «commit»֊ներ](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)
անկանու՞մ եք տեսնել ձեր նախագիծը այս ցուցակում_ [ուղղարկեք «pull» հարցում](https://github.com/conventional-changelog/conventionalcommits.org/pulls)։