aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md80
1 files changed, 80 insertions, 0 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..e91dac8
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,80 @@
+Contributing
+============
+Gentoo Developers have full priviledges to the gentoolkit repository and
+any Gentoo developer can do work on the gentoolkit source. We only ask that you
+keep the following in mind:
+
+- If you want to do a major change (i.e rewrite/refactor something), please talk
+ to us before pushing any commits. If you break something, please fix it.
+- All members of the Portage or Portage Tools projects are authorized to create
+ a new release of gentoolkit or gentoolkit-dev.
+- All other Gentoo Developers are authorized to create a new release if it is
+ coordinated with fuzzyray and/or dolsen.
+- If you create a release and it breaks, please fix it.
+
+Any non Gentoo developers who wish to contribute, the best way to get
+started is by cloning a copy of the repository and submitting patches to
+bugzilla. Additionally, we can be found in the #gentoo-portage IRC
+channel.
+
+Formatting
+==========
+We use [black](https://pypi.org/project/black/) to format the code
+base. Please make sure you run it against any PRs prior to submitting
+(otherwise we'll probably reject it).
+
+There are [ways to integrate](https://black.readthedocs.io/en/stable/integrations/editors.html)
+black into your text editor and/or IDE.
+
+You can also set up a git hook to check your commits, in case you don't want
+editor integration. Something like this:
+
+```sh
+# .git/hooks/pre-commit (don't forget to chmod +x)
+
+#!/bin/bash
+black --check --diff .
+```
+
+To ignore reformatting commits (which are listed in `.gitignorerevs`) you can do
+the following:
+
+```sh
+git config blame.ignoreRevsFile .gitignorerevs
+```
+
+Adding or modifying code
+========================
+- If you add new code, best practice is to write a test for it.
+- If you're modifying code that doesn't have a test and you can write a test
+ for it, please do.
+- Before committing your changes, run "tox" to ensure that you didn't break
+ tests or introduced a flake8 error.
+- If flake8 raises a warning or error that you don't agree with, it's probably
+ better to just change your code. If you're sure you have a good reason for
+ doing what you're doing, you can add "# noqa" at the end of the line to
+ silence it.
+
+Creating a release
+==================
+Note: We are using VERSION="0.3.0" simply as an example.
+
+```sh
+# Run Gentoolkit's test suite, make sure it passes:
+# Note: requires dev-python/snakeoil
+./setup.py test
+
+# Create a source distribution (you need to add VERSION here):
+VERSION="0.3.0" ./setup.py sdist
+# Transfer dist/gentoolkit-0.3.0.tar.gz to dev.gentoo.org:/space/distfiles-local
+# scp dist/gentoolkit-0.3.0.tar.gz username@dev.gentoo.org:/space/distfiles-local
+
+# Clean up temporary files:
+./setup.py clean -a
+git status
+# rm or mv any untracked files/directories
+
+# Create a tag for the release
+git tag gentoolkit-0.3.0
+git push origin gentoolkit-0.3.0
+```