Browse Source

Fixed #32165 -- Added pre-commit hooks

* Added pre-commit hooks for isort, flake8 and eslint
* Added documentation on how to install and use the tool
David Smith 4 years ago
parent
commit
3bca95cca2

+ 13 - 0
.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

+ 26 - 0
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 <https://pre-commit.com>`_ 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

+ 3 - 1
docs/internals/contributing/writing-code/submitting-patches.txt

@@ -290,7 +290,9 @@ All code changes
 
 * Does the :doc:`coding style
   </internals/contributing/writing-code/coding-style>` conform to our
-  guidelines? Are there any ``flake8`` errors?
+  guidelines? Are there any ``flake8`` errors? You can install the
+  :ref:`pre-commit <coding-style-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?