This page describes rules to contribute changes and features by Pull Requests creating.
To initialize your repo do:
- Fork
https://github.com/ostis-ai/scp-machine
. - Clone your fork to your machine and prepare (see Readme).
git clone [email protected]:yourlogin/scp-machine.git
cd scp-machine
git remote add upstream [email protected]:ostis-ai/scp-machine.git
- To update your
main
fromupstream
use:
git fetch upstream
git checkout upstream/main
- Use
git rebase
instead ofmerge
. See documentation about this command. To rebase your branch against main use:
git checkout <yourbranch>
git rebase upstream/main
- If you have any problems, then redo:
git rebase --abort
- Or ask in Element.
Each commit message should be formed as: [tag1]...[tagN] Message text (#issue)
.
Message text should start from an upper case letter. If commit doesn't fix or implement any #issue, then it shouldn't be pointed in commit message.
Examples:
[scp] Implement contErase operator [docs] Add examples of using contErase operator
Possible tags:
[scp]
- changes in scp folder;[kb]
- changes in kb folder;[tests]
or[test]
- changes in tests;[config]
- commits with changes in configuration;[review]
- commits with review fixes;[refactor]
- commits with some code refactoring;[changelog]
- use when you update changelog;[docs]
or[doc]
- use when you update documentation;[scripts]
- updates in thescp-machine/scripts
files[ci]
- changes inci
configuration or scripts;[git]
- changes ingit
configuration;
Each commit in Pull Request should be an atomic. In other words, it should implement or fix one feature. For example:
Last commit ... [tests] Test contErase operator [changelog] Add info about contErase operator ... Init commit
In this example we add class to work with console (where implemented colored output), then in another commit we add implementation of colored log output.
Each commit should have not much differences excluding cases, with:
- CodeStyle changes;
- Renames;
- Code formatting.
Do atomic commits for each changes. For example if you rename some members in ClassX
and ClassY
, then do two commits:
[refactor] Rename members in ClassX according to codestyle [refactor] Rename members in ClassY according to codestyle
Do not mix codestyle changes and any logical fixes in one commit.
All commits that not follow these rules should be split according to these rules. Otherwise they will be rejected with Pull Request.
Each Pull Request with many changes, that not possible to review (excluding codestyle, rename changes), will be rejected.
All commit, that not applies to these rules, should be split by these rules. Another way they will be rejected with Pull Request.
- Read rules to create PR in documentation;
- Update changelog;
- Update documentation;
- Cover new functionality by tests;
- Your code should be written according to a codestyle like in sc-machine (see Codestyle rules).
- Create PR on GitHub;
- Check that CI checks were passed successfully.
- Reviewer should test code from PR if CI don't do it;
- Reviewer submit review as set of conversations;
- Author make review fixes at
Review fixes
commits; - Author re-request review;
- Reviewer resolve conversations if they were fixed and approve PR.