mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-30 08:04:08 +00:00
Update developer docs wrt pre-commit
This commit is contained in:
parent
d50a1151bc
commit
272d6d0aef
16
Makefile
16
Makefile
@ -13,8 +13,6 @@ MAKEFLAGS += --warn-undefined-variables
|
|||||||
MAKEFLAGS += --no-builtin-rules
|
MAKEFLAGS += --no-builtin-rules
|
||||||
|
|
||||||
# Local target variables
|
# Local target variables
|
||||||
VCS_HOOK_SAMPLES=$(wildcard .git/hooks/*.sample)
|
|
||||||
VCS_HOOKS=$(VCS_HOOK_SAMPLES:%.sample=%)
|
|
||||||
PYTHON=python
|
PYTHON=python
|
||||||
export PYTHON
|
export PYTHON
|
||||||
PYFLAKES=flake8
|
PYFLAKES=flake8
|
||||||
@ -31,15 +29,6 @@ TEST_SUITE=allmydata
|
|||||||
default:
|
default:
|
||||||
@echo "no default target"
|
@echo "no default target"
|
||||||
|
|
||||||
.PHONY: install-vcs-hooks
|
|
||||||
## Install the VCS hooks to run linters on commit and all tests on push
|
|
||||||
install-vcs-hooks: .git/hooks/pre-commit .git/hooks/pre-push
|
|
||||||
.PHONY: uninstall-vcs-hooks
|
|
||||||
## Remove the VCS hooks
|
|
||||||
uninstall-vcs-hooks: .tox/create-venvs.log
|
|
||||||
"./$(dir $(<))py36/bin/pre-commit" uninstall || true
|
|
||||||
"./$(dir $(<))py36/bin/pre-commit" uninstall -t pre-push || true
|
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
## Run all tests and code reports
|
## Run all tests and code reports
|
||||||
test: .tox/create-venvs.log
|
test: .tox/create-venvs.log
|
||||||
@ -215,7 +204,7 @@ clean:
|
|||||||
rm -f *.pkg
|
rm -f *.pkg
|
||||||
|
|
||||||
.PHONY: distclean
|
.PHONY: distclean
|
||||||
distclean: clean uninstall-vcs-hooks
|
distclean: clean
|
||||||
rm -rf src/*.egg-info
|
rm -rf src/*.egg-info
|
||||||
rm -f src/allmydata/_version.py
|
rm -f src/allmydata/_version.py
|
||||||
rm -f src/allmydata/_appname.py
|
rm -f src/allmydata/_appname.py
|
||||||
@ -261,6 +250,3 @@ src/allmydata/_version.py:
|
|||||||
|
|
||||||
.tox/create-venvs.log: tox.ini setup.py
|
.tox/create-venvs.log: tox.ini setup.py
|
||||||
tox --notest -p all | tee -a "$(@)"
|
tox --notest -p all | tee -a "$(@)"
|
||||||
|
|
||||||
$(VCS_HOOKS): .tox/create-venvs.log .pre-commit-config.yaml
|
|
||||||
"./$(dir $(<))py36/bin/pre-commit" install --hook-type $(@:.git/hooks/%=%)
|
|
||||||
|
@ -5,23 +5,17 @@ Developer Guide
|
|||||||
Pre-commit Checks
|
Pre-commit Checks
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
This project is configured for use with `pre-commit`_ to install `VCS/git hooks`_ which
|
This project is configured for use with `pre-commit`_ to install `VCS/git hooks`_ which perform some static code analysis checks and other code checks to catch common errors.
|
||||||
perform some static code analysis checks and other code checks to catch common errors
|
These hooks can be configured to run before commits or pushes
|
||||||
before each commit and to run the full self-test suite to find less obvious regressions
|
|
||||||
before each push to a remote.
|
|
||||||
|
|
||||||
For example::
|
For example::
|
||||||
|
|
||||||
tahoe-lafs $ make install-vcs-hooks
|
tahoe-lafs $ pre-commit install --hook-type pre-push
|
||||||
...
|
|
||||||
+ ./.tox//py36/bin/pre-commit install --hook-type pre-commit
|
|
||||||
pre-commit installed at .git/hooks/pre-commit
|
|
||||||
+ ./.tox//py36/bin/pre-commit install --hook-type pre-push
|
|
||||||
pre-commit installed at .git/hooks/pre-push
|
pre-commit installed at .git/hooks/pre-push
|
||||||
tahoe-lafs $ python -c "import pathlib; pathlib.Path('src/allmydata/tabbed.py').write_text('def foo():\\n\\tpass\\n')"
|
tahoe-lafs $ echo "undefined" > src/allmydata/undefined_name.py
|
||||||
tahoe-lafs $ git add src/allmydata/tabbed.py
|
tahoe-lafs $ git add src/allmydata/undefined_name.py
|
||||||
tahoe-lafs $ git commit -a -m "Add a file that violates flake8"
|
tahoe-lafs $ git commit -a -m "Add a file that violates flake8"
|
||||||
...
|
tahoe-lafs $ git push
|
||||||
codechecks...............................................................Failed
|
codechecks...............................................................Failed
|
||||||
- hook id: codechecks
|
- hook id: codechecks
|
||||||
- exit code: 1
|
- exit code: 1
|
||||||
@ -30,58 +24,17 @@ For example::
|
|||||||
codechecks inst-nodeps: ...
|
codechecks inst-nodeps: ...
|
||||||
codechecks installed: ...
|
codechecks installed: ...
|
||||||
codechecks run-test-pre: PYTHONHASHSEED='...'
|
codechecks run-test-pre: PYTHONHASHSEED='...'
|
||||||
codechecks run-test: commands[0] | flake8 src static misc setup.py
|
codechecks run-test: commands[0] | flake8 src/allmydata/undefined_name.py
|
||||||
src/allmydata/tabbed.py:2:1: W191 indentation contains tabs
|
src/allmydata/undefined_name.py:1:1: F821 undefined name 'undefined'
|
||||||
ERROR: InvocationError for command ./tahoe-lafs/.tox/codechecks/bin/flake8 src static misc setup.py (exited with code 1)
|
ERROR: InvocationError for command ./tahoe-lafs/.tox/codechecks/bin/flake8 src/allmydata/undefined_name.py (exited with code 1)
|
||||||
___________________________________ summary ____________________________________
|
___________________________________ summary ____________________________________
|
||||||
ERROR: codechecks: commands failed
|
ERROR: codechecks: commands failed
|
||||||
...
|
|
||||||
|
|
||||||
To uninstall::
|
To uninstall::
|
||||||
|
|
||||||
tahoe-lafs $ make uninstall-vcs-hooks
|
tahoe-lafs $ pre-commit uninstall --hook-type pre-push
|
||||||
...
|
|
||||||
+ ./.tox/py36/bin/pre-commit uninstall
|
|
||||||
pre-commit uninstalled
|
|
||||||
+ ./.tox/py36/bin/pre-commit uninstall -t pre-push
|
|
||||||
pre-push uninstalled
|
pre-push uninstalled
|
||||||
|
|
||||||
Note that running the full self-test suite takes several minutes so expect pushing to
|
|
||||||
take some time. If you can't or don't want to wait for the hooks in some cases, use the
|
|
||||||
``--no-verify`` option to ``$ git commit ...`` or ``$ git push ...``. Alternatively,
|
|
||||||
see the `pre-commit`_ documentation and CLI help output and use the committed
|
|
||||||
`pre-commit configuration`_ as a starting point to write a local, uncommitted
|
|
||||||
``../.pre-commit-config.local.yaml`` configuration to use instead. For example::
|
|
||||||
|
|
||||||
tahoe-lafs $ ./.tox/py36/bin/pre-commit --help
|
|
||||||
tahoe-lafs $ ./.tox/py36/bin/pre-commit instll --help
|
|
||||||
tahoe-lafs $ cp "./.pre-commit-config.yaml" "./.pre-commit-config.local.yaml"
|
|
||||||
tahoe-lafs $ editor "./.pre-commit-config.local.yaml"
|
|
||||||
...
|
|
||||||
tahoe-lafs $ ./.tox/py36/bin/pre-commit install -c "./.pre-commit-config.local.yaml" -t pre-push
|
|
||||||
pre-commit installed at .git/hooks/pre-push
|
|
||||||
tahoe-lafs $ git commit -a -m "Add a file that violates flake8"
|
|
||||||
[3398.pre-commit 29f8f43d2] Add a file that violates flake8
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
create mode 100644 src/allmydata/tabbed.py
|
|
||||||
tahoe-lafs $ git push
|
|
||||||
...
|
|
||||||
codechecks...............................................................Failed
|
|
||||||
- hook id: codechecks
|
|
||||||
- exit code: 1
|
|
||||||
|
|
||||||
GLOB sdist-make: ./tahoe-lafs/setup.py
|
|
||||||
codechecks inst-nodeps: ...
|
|
||||||
codechecks installed: ...
|
|
||||||
codechecks run-test-pre: PYTHONHASHSEED='...'
|
|
||||||
codechecks run-test: commands[0] | flake8 src static misc setup.py
|
|
||||||
src/allmydata/tabbed.py:2:1: W191 indentation contains tabs
|
|
||||||
ERROR: InvocationError for command ./tahoe-lafs/.tox/codechecks/bin/flake8 src static misc setup.py (exited with code 1)
|
|
||||||
___________________________________ summary ____________________________________
|
|
||||||
ERROR: codechecks: commands failed
|
|
||||||
...
|
|
||||||
|
|
||||||
error: failed to push some refs to 'github.com:jaraco/tahoe-lafs.git'
|
|
||||||
|
|
||||||
|
|
||||||
.. _`pre-commit`: https://pre-commit.com
|
.. _`pre-commit`: https://pre-commit.com
|
||||||
|
Loading…
x
Reference in New Issue
Block a user