Change Management Notatie
Dit document beschrijft hoe wij te werk gaan bij het communiceren van changes in het CHANGELOG en in onze commits en Pull Requests. Hierin houden we bepaalde formules aan zodat het eenvoudig is om ook ver in de toekomst terug te zien wanneer een bepaalde change gedaan is en waarom.
Een correcte beschrijving van een change bestaat uit:
Al deze informatie zorgen er samen voor dat in 1 zin zo duidelijk mogelijk wordt wat het antwoord is op de volgende vragen:
- 'Wat?' (
type
ensamenvatting
) - 'Waarom?' (
issuenummer
) - 'Waar?' (
scope
)
'Wie?', 'Wanneer?' en 'Hoe?' worden door GitHub beantwoord in de meta informatie van het issue.
GitHub Issuenummer
We verwijzen in elke aantekening in het CHANGELOG, en in iedere commit van een Pull Request naar het issuenummer waarin we de feature, bug of deprecation aankaarten, documenteren en bespreken. Dit is waarom:
- Het CHANGELOG kan elke DSO Toolkit gebruiker lezen welke wijzigingen er in een bepaalde release bij zijn gekomen. Met een duidelijke vermelding van het issuenummer kunnen zij doorklikken en zien waarom bepaalde wijzigingen tot stand zijn gekomen.
- Als je een commit voorziet van het issuenummer, zien gebruikers die het issue hebben aangekaart of erover mee praten hoe het vordert met het oplossen of uitvoeren van het issue.
Type
Met type
bedoelen we het soort change dat is uitgevoerd.
Hiervoor gebruiken we altijd één van de volgende trefwoorden:
- Added
- Changed
- Deprecated
- Docs
- Fixed
- Removed
- Task
Dit geeft ons niet alleen het voordeel van een schone Git history, maar ook pas op de plaats om in het CHANGELOG wijzigingen van hetzelfde soort te groeperen voor de leesbaarheid.
Scope
Er is geen vaste lijst trefwoorden voor scope
. De scope
beschrijft het onderwerp van de change. Dit kan bijvoorbeeld een component zijn, of een hele package.
In het geval van een component kan een variant tussen haakjes worden gezet. Denk bijvoorbeeld aan:
- Alert
- Highlight Box (Yellow)
- Build
- Linting
Let op de casing van componenten. Als je scope
uit meer dan 1 woord bestaat, gebruiken we "Spaced Pascal Case". Dit komt neer op elk woord (van de scope
) met een hoofdletter, en elk woord onderling gescheiden door middel van een spatie.
Samenvatting
De samenvatting vat kort samen welke wijziging je hebt uitgevoerd.
GitHub issue
De titel van het issue is:
SCOPE: SAMENVATTING
CHANGELOG.md
Elke change wordt in de CHANGELOG in een groep gedocumenteerd. Het type wordt gebruikt om de groep te bepalen. Nieuwe changes worden altijd onder de volgende release ("Next") geplaatst.
Het format voor een CHANGELOG entry is:
## Next
### GROEP
* SCOPE: SUMMARY ([#ISSUE_ID](ISSUE_URL))
Met []()
wordt een Markdown link gemaakt. ISSUE_URL is https://www.github.com/dso-toolkit/dso-toolkit/issues/ISSUE_ID
.
Voorbeeld
Een voorbeeld van een goede CHANGELOG entry ziet er zo uit:
## Next
### Fixed
* Banner: Tooltip/toggletip verkeerde link-kleur ([#2305](https://github.com/dso-toolkit/dso-toolkit/issues/2305))
Bekijk voor meer goede voorbeelden de broncode van het huidige CHANGELOG.
Commit message
De éérste commit message is altijd opgemaakt volgens de volgende formule:
#ISSUE_ID [TYPE] SCOPE: SAMENVATTING
De opvolgende commit messages hoeven alleen te beginnen met het #ISSUE_ID.
Voorbeeld
Een voorbeeld van een goede eerste commit message ziet er zo uit:
#2305 [Fixed] Banner: Tooltip/toggletip verkeerde link-kleur
Waarbij dan elk opeenvolgende commit zou beginnen met #2305
.
GitHub pull request
De titel van het pull request:
#ISSUE_ID SCOPE: SAMENVATTING
Voorbeeld
Een goede titel van een pull request ziet er zo uit:
#2240 Document Component: Diverse bevindingen
Soms zetten we het type aanpassing hier ook bij.