Contributions are always very much appreciated. However, to make sure the process of accepting patches goes smoothly for everyone (especially for the maintainer), you should try to follow these few simple guidelines when you contribute:
develop
branch (git checkout -b your_branch develop
).
If your contribution is a bug fix, you should name your branch bugfix/xxx
;
for a feature, it should be feature/xxx
. Otherwise, just use your good
judgment. Consistent naming of branches is appreciated since it makes the
output of git branch
easier to understand with a single glance. mkdir build
cd build
cmake ..
cmake --build . --target check
Commit your changes. Your commit message should start with a one line
short description of the modifications, with the details and explanations
of your modifications following in subsequent paragraphs or bullet points.
Please limit your lines to about 78 characters in commit messages, since
it makes the output easier to read in git log
. Also, starting your commit
message with a tag describing the nature of the commit is nice, since it
makes the commit history easier to skim through. For commits that do not
change any functionality (e.g. refactoring or fixing typos), the [NFC]
tag (No Functionality Change) can be used. Here's an example of an
acceptable commit message:
[Searchable] Refactor the interface
- Rename elem to contains
- Rename subset to is_subset, and make is_subset applicable in infix notation
- Add the at_key method
- operator[] is now bound to at_key instead of find
When applicable, please squash adjacent wip commits into a single logical commit. If your contribution has several logical commits, it's fine.
git push origin your_branch
).develop
branch (not against master
).
I will do my best to respond in a timely manner. I might discuss your patch
and suggest some modifications, or I might amend your patch myself and ask
you for feedback. You will always be given proper credit.I'm not going to write an exhaustive style guide, but here are a couple of points you should watch out for:
#include
s go first, then a blank line and system headers.
#include
s within each block should be sorted in alphabetical order.