summaryrefslogtreecommitdiff
path: root/docs/hacking/contributing.rst
blob: 917f84dd885e2bb8a2e178ef4a59ea2a04d6f1fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
:LastChangedDate: $LastChangedDate$
:LastChangedRevision: $LastChangedRevision$
:LastChangedBy: $LastChangedBy$

.. _contributing:

Contributing
============

This project adheres to the `Contributor Covenant 1.4`_. By participating you
are expected to uphold this code. Please report unacceptable behavior to
community@leap.se.

* Fork the code at https://0xacab.org/leap/bitmask-dev. New users may be
  limited in how many forks they can have, so if this is a problem for you,
  file a `support ticket`_ or fork the code from the `github mirror`_.
* Create a merge request on `0xacab`_. If you  forked from the
  `github mirror`_, create your pull request there. They 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.

.. _`Contributor Covenant 1.4`: https://www.contributor-covenant.org/version/1/4/code-of-conduct
.. _`support ticket`: https://0xacab.org/riseup/0xacab/issues
.. _`github mirror`: https://github.com/leapcode/bitmask-dev
.. _`0xacab`: https://0xacab.org/leap/bitmask-dev


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