summaryrefslogtreecommitdiff
path: root/docs/hacking/contributing.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/hacking/contributing.rst')
-rw-r--r--docs/hacking/contributing.rst60
1 files changed, 60 insertions, 0 deletions
diff --git a/docs/hacking/contributing.rst b/docs/hacking/contributing.rst
new file mode 100644
index 0000000..8d83593
--- /dev/null
+++ b/docs/hacking/contributing.rst
@@ -0,0 +1,60 @@
+:LastChangedDate: $LastChangedDate$
+:LastChangedRevision: $LastChangedRevision$
+:LastChangedBy: $LastChangedBy$
+
+.. _contributing:
+
+Contributing
+============
+
+* Send your merge requests to https://0xacab/leap/bitmask-dev, it will be
+ subject to code-review.
+* Please base your branch for master, and keep it rebased when you push.
+* After review, please squash your commits.
+
+
+Coding conventions
+---------------------------------
+
+* Follow pep8 for all the python code.
+* Git messages should be informative.
+* There is a pre-commit hook ready to be used in the ``docs/hooks`` folder,
+ alongside some other hooks to do autopep8 on each commit.
+
+.. include:: ../hooks/leap-commit-template.README
+ :literal:
+
+Dependencies
+----------------------------------
+
+We try hard not to introduce any new dependencies at this moment. If you really
+have to, the packages bitmask depends on have to be specified *both* in the
+setup.py and the pip requirements file.
+
+Don't introduce any pinning in the setup.py file, they should go in the
+requirements files (mainly ``pkg/requirements.pip``).
+
+
+Signing your commits
+---------------------------------
+
+For contributors with commit access, you **should** sign all your commits. If
+you are merging some code from external contributors, you should sign their
+commits.
+
+For handy alias for sign and signoff commits from external contributors add to
+your gitconfig::
+
+ [alias]
+ # Usage: git signoff-rebase [base-commit]
+ signoff-rebase = "!GIT_SEQUENCE_EDITOR='sed -i -re s/^pick/e/' sh -c 'git rebase -i $1 && while test -f .git/rebase-merge/interactive; do git commit --amend --signoff --no-edit && git rebase --continue; done' -"
+
+Merging code
+---------------------------------
+
+We avoid merge commits into master, they make a very messy history. Put this
+in your gitconfig to only allow the merges that can be resolved as a
+fast-forward::
+
+ [merge]
+ ff = only