We recently started using a lot of auto-formatters across our Python/iOS/Android code, as the team has grown (there are 17 people touching code at the company now).
I like auto-formatting, because it makes PRs less stressful to commit, and makes review comments more focused on stuff that actually matters. How exactly the code gets formatted is not something I care much about, just that it happens consistently, and I don't have to think about it.
We use pre-commit with Black and other formatters, such that it formats the code, warns you stuff changed, prevents the commit, and makes you recommit with the formatting patch included.
Because pre-commit can be tough to google sometimes, depending on your search history, here's the direct link: https://pre-commit.com/
I assumed the poster meant the git concept of pre-commit hooks, which is just a shell script - https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
more .pre-commit-config.yaml
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.1.0
hooks:
- id: end-of-file-fixer
- id: check-json
- id: check-yaml
- repo: https://github.com/asottile/reorder_python_imports
rev: v1.3.4
hooks:
- id: reorder-python-imports
args: [--application-directories=gaia]
language_version: python3
- repo: https://github.com/ambv/black
rev: stable
hooks:
- id: black
language_version: python3
- repo: local
hooks:
- id: eslint
name: eslint
entry: ./frontend/node_modules/.bin/eslint --fix
language: node
language_version: system
files: \.(js|jsx|ts|tsx)$
- repo: https://github.com/prettier/prettier
rev: "1.15.3"
hooks:
- id: prettier
files: \.(yml|yaml|md|json)$
language_version: system