docs: commit style section
Added guidelines for writing commits in the `Getting Started`
section.
Change-Id: I0ea41bc869311a81c5894d140eff0964b364dda0
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/docs/getting_started/commit-style.rst b/docs/getting_started/commit-style.rst
new file mode 100644
index 0000000..a7f248f
--- /dev/null
+++ b/docs/getting_started/commit-style.rst
@@ -0,0 +1,106 @@
+Commits Style
+=============
+
+When writing commit messages, please think carefully about the purpose and scope
+of the change you are making: describe briefly what the change does, and
+describe in details why it does it. This helps to ensure that changes to the
+code-base are transparent and approachable to reviewers, and it allows maintainers
+to keep a more accurate changelog. You may use Markdown in commit messages.
+
+A good commit message provides all the background information needed for
+reviewers to understand the intent and rationale of the patch. This information
+is also useful for future reference.
+
+For example:
+
+- What does the patch do?
+- What motivated it?
+- What impact does it have?
+- How was it tested?
+- Have alternatives been considered? Why did you choose this approach over
+ another one?
+- If it fixes an issue, detail what the issue is and provide any pointers/resources
+ that are found necessary.
+
+Hafnium follows the `Conventional Commits`_ specification. All commits to the
+main repository and its submodules are expected to adhere to these guidelines,
+so it is **strongly** recommended that you read at least the `quick summary`_
+of the specification.
+
+To briefly summarize, commit messages are expected to be of the form:
+
+.. code::
+
+ <type>[optional scope]: <description>
+
+ [optional body]
+
+ [optional footer(s)]
+
+ Signed-off-by: Contributor <contributor@email.com>
+ Change-Id: 00000000000000000000000000000000000000000
+
+The maximum character counts per line are:
+
+* 50 for the commit title.
+* 72 for the commit body.
+
+The following `types` are permissible and are strictly enforced:
+
++--------------+---------------------------------------------------------------+
+| Type | Description |
++==============+===============================================================+
+| ``feat`` | A new feature |
++--------------+---------------------------------------------------------------+
+| ``fix`` | A bug fix |
++--------------+---------------------------------------------------------------+
+| ``build`` | Changes that affect the build system or external dependencies |
++--------------+---------------------------------------------------------------+
+| ``ci`` | Changes to CI configuration files and scripts |
++--------------+---------------------------------------------------------------+
+| ``docs`` | Documentation-only changes |
++--------------+---------------------------------------------------------------+
+| ``perf`` | A code change that improves performance |
++--------------+---------------------------------------------------------------+
+| ``refactor`` | A code change that neither fixes a bug nor adds a feature |
++--------------+---------------------------------------------------------------+
+| ``revert`` | Changes that revert a previous change |
++--------------+---------------------------------------------------------------+
+| ``style`` | Changes that do not affect the meaning of the code |
+| | (white-space, formatting, missing semi-colons, etc.) |
++--------------+---------------------------------------------------------------+
+| ``test`` | Adding missing tests or correcting existing tests |
++--------------+---------------------------------------------------------------+
+| ``chore`` | Any other change |
++--------------+---------------------------------------------------------------+
+
+While we don't enforce scopes strictly, we do ask that commits use these if they
+can. These should reference the functionality the patch relates to.
+
+Mandated Trailers
+-----------------
+
+Commits are expected to be signed off with the ``Signed-off-by:`` trailer using
+your real name and email address. You can do this automatically by committing
+with Git's ``-s`` flag.
+
+There may be multiple ``Signed-off-by:`` lines depending on the history of the
+patch, but one **must** be the committer. More details may be found in the
+`Gerrit Signed-off-by Lines guidelines`_.
+
+Ensure that each commit also has a unique ``Change-Id:`` line.
+
+If you have followed optional steps in the prerequisites to install the clone the
+repository using the "`Clone with commit-msg hook`" clone method, then this should
+be done automatically for you.
+
+More details may be found in the `Gerrit Change-Ids documentation`_.
+
+.. _Conventional Commits: https://www.conventionalcommits.org/en/v1.0.0
+.. _Gerrit Change-Ids documentation: https://review.trustedfirmware.org/Documentation/user-changeid.html
+.. _Gerrit Signed-off-by Lines guidelines: https://review.trustedfirmware.org/Documentation/user-signedoffby.html
+.. _quick summary: https://www.conventionalcommits.org/en/v1.0.0/#summary
+
+--------------
+
+*Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.*
diff --git a/docs/getting_started/index.rst b/docs/getting_started/index.rst
index 733393c..c7ca45e 100644
--- a/docs/getting_started/index.rst
+++ b/docs/getting_started/index.rst
@@ -8,6 +8,7 @@
building
docs-build
coding-style
+ commit-style
--------------