Contributing
Commits

Commits

Many companies don't pay attention to conventional commits, we do, because we like to have a clean project history and workflows to read. Most of us use Git Graph (opens in a new tab), an extension that allows us to read our Git history as a graph. Our commits convention is inspired by Conventional Commits 1.0.0 (opens in a new tab) but customized into something more fun! 😄

Structure

The commit message should be structured as follows and in lowercase:

<gitmoji> <type> <description> [(#<issue number>)]

[optional body]

[optional footer(s)]

Example:

📝 update documentation contributors
 
- Add @jerembdn as a contributor
- Add @younesbessa as a contributor
 
Co-authored-by: Younes Bessa <younes@onruntime.com>

But most of the time we avoid wasting a lot of time on it so it looks more like this:

📝 update documentation contributors

Gitmojis

We use gitmoji (opens in a new tab) to categorize our commits, it has a good ecosystem and is very easy to use on a daily basis using these tools (opens in a new tab).

Otherwise here is the complete list of these emojis, their code and the description given to them:

EmojiCodeDescription
🎨:art:Improve structure / format of the code.
⚡️:zap:Improve performance.
🔥:fire:Remove code or files.
🐛:bug:Fix a bug.
🚑️:ambulance:Critical hotfix.
:sparkles:Introduce new features.
📝:memo:Add or update documentation.
🚀:rocket:Deploy stuff.
💄:lipstick:Add or update the UI and style files.
🎉:tada:Begin a project.
:white_check_mark:Add, update, or pass tests.
🔒️:lock:Fix security or privacy issues.
🔐:closed_lock_with_key:Add or update secrets.
🔖:bookmark:Release / Version tags.
🚨:rotating_light:Fix compiler / linter warnings.
🚧:construction:Work in progress.
💚:green_heart:Fix CI Build.
⬇️:arrow_down:Downgrade dependencies.
⬆️:arrow_up:Upgrade dependencies.
📌:pushpin:Pin dependencies to specific versions.
👷:construction_worker:Add or update CI build system.
📈:chart_with_upwards_trend:Add or update analytics or track code.
♻️:recycle:Refactor code.
:heavy_plus_sign:Add a dependency.
:heavy_minus_sign:Remove a dependency.
🔧:wrench:Add or update configuration files.
🔨:hammer:Add or update development scripts.
🌐:globe_with_meridians:Internationalization and localization.
✏️:pencil2:Fix typos.
💩:poop:Write bad code that needs to be improved.
⏪️:rewind:Revert changes.
🔀:twisted_rightwards_arrows:Merge branches.
📦️:package:Add or update compiled files or packages.
👽️:alien:Update code due to external API changes.
🚚:truck:Move or rename resources (e.g.: files, paths, routes).
📄:page_facing_up:Add or update license.
💥:boom:Introduce breaking changes.
🍱:bento:Add or update assets.
♿️:wheelchair:Improve accessibility.
💡:bulb:Add or update comments in source code.
🍻:beers:Write code drunkenly.
💬:speech_balloon:Add or update text and literals.
🗃️:card_file_box:Perform database related changes.
🔊:loud_sound:Add or update logs.
🔇:mute:Remove logs.
👥:busts_in_silhouette:Add or update contributor(s).
🚸:children_crossing:Improve user experience / usability.
🏗️:building_construction:Make architectural changes.
📱:iphone:Work on responsive design.
🤡:clown_face:Mock things.
🥚:egg:Add or update an easter egg.
🙈:see_no_evil:Add or update a .gitignore file.
📸:camera_flash:Add or update snapshots.
⚗️:alembic:Perform experiments.
🔍️:mag:Improve SEO.
🏷️:label:Add or update types.
🌱:seedling:Add or update seed files.
🚩:triangular_flag_on_post:Add, update, or remove feature flags.
🥅:goal_net:Catch errors.
💫:dizzy:Add or update animations and transitions.
🗑️:wastebasket:Deprecate code that needs to be cleaned up.
🛂:passport_control:Work on code related to authorization, roles and permissions.
🩹:adhesive_bandage:Simple fix for a non-critical issue.
🧐:monocle_face:Data exploration/inspection.
⚰️:coffin:Remove dead code.
🧪:test_tube:Add a failing test.
👔:necktie:Add or update business logic.
🩺:stethoscope:Add or update healthcheck.
🧱:bricks:Infrastructure related changes.
🧑‍💻:technologist:Improve developer experience.
💸:money_with_wings:Add sponsorships or money related infrastructure.
🧵:thread:Add or update code related to multithreading or concurrency.
🦺:safety_vest:Add or update code related to validation.

Types

We use the following commit types:

TypeDescription
addAdd a new feature
fixFix a bug
improveImprove something
updateUpdate something
removeRemove something
refactorRefactor something
renameRename something
moveMove a file or folder
upgradeUpgrade dependencies
downgradeDowngrade dependencies

Description

The description should be a short description of the commit, it should be written in the imperative, present tense. For example:

# Good
📝 update documentation contributors
 
# Bad
📝 updated documentation contributors

Issue number

If the commit is related to an issue, you can add the issue number at the end of the description, for example:

📝 update documentation contributors (#123)

Body

The body should include the motivation for the change and contrast this with previous behavior. It should be written in the imperative, present tense. For example:

# Good
📝 update documentation contributors
 
- Add @jerembdn as a contributor
- Add @younesbessa as a contributor
 
Co-authored-by: Younes Bessa <younes@onruntime.com>
 
# Bad
📝 update documentation contributors
 
- Added @jerembdn as a contributor
- Added @younesbessa as a contributor
 
Co-authored-by: Younes Bessa <younes@onruntime.com>