diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..17b55f150e --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,13 @@ +repos: + - repo: https://github.com/PyCQA/isort + rev: 5.6.4 + hooks: + - id: isort + - repo: https://gitlab.com/pycqa/flake8 + rev: 3.8.4 + hooks: + - id: flake8 + - repo: https://github.com/pre-commit/mirrors-eslint + rev: v7.16.0 + hooks: + - id: eslint diff --git a/docs/internals/contributing/writing-code/coding-style.txt b/docs/internals/contributing/writing-code/coding-style.txt index 0c91f20268..739ff0f4b9 100644 --- a/docs/internals/contributing/writing-code/coding-style.txt +++ b/docs/internals/contributing/writing-code/coding-style.txt @@ -4,6 +4,32 @@ Coding style Please follow these coding standards when writing code for inclusion in Django. +.. _coding-style-pre-commit: + +Pre-commit checks +================= + +`pre-commit `_ is a framework for managing pre-commit +hooks. These hooks help to identify simple issues before committing code for +review. By checking for these issues before code review it allows the reviewer +to focus on the change itself, and it can also help to reduce the number CI +runs. + +To use the tool, first install ``pre-commit`` and then the git hooks:: + +.. console:: + + $ pip install pre-commit + $ pre-commit install + +On the first commit ``pre-commit`` will install the hooks, these are +installed in their own environments and will take a short while to +install on the first run. Subsequent checks will be significantly faster. +If the an error is found an appropriate error message will be displayed. +If the error was with ``isort`` then the tool will go ahead and fix them for +you. Review the changes and re-stage for commit if you are happy with +them. + .. _coding-style-python: Python style diff --git a/docs/internals/contributing/writing-code/submitting-patches.txt b/docs/internals/contributing/writing-code/submitting-patches.txt index 45b2b9bdc4..161f6f8d6f 100644 --- a/docs/internals/contributing/writing-code/submitting-patches.txt +++ b/docs/internals/contributing/writing-code/submitting-patches.txt @@ -290,7 +290,9 @@ All code changes * Does the :doc:`coding style ` conform to our - guidelines? Are there any ``flake8`` errors? + guidelines? Are there any ``flake8`` errors? You can install the + :ref:`pre-commit ` hooks to automatically catch + these errors. * If the change is backwards incompatible in any way, is there a note in the release notes (``docs/releases/A.B.txt``)? * Is Django's test suite passing?