| ### Install pre-commit hook |
| |
| The `all.bash` script runs quickly enough so that you can use it as a git |
| pre-commit hook. If you don't already have a pre-commit hook, you can install |
| it with |
| |
| ``` |
| ln -s -f ../../all.bash .git/hooks/pre-commit |
| ``` |
| |
| To add `all.bash` to an existing pre-commit hook, edit `.git/hooks/pre-commit` and add the line |
| |
| ``` |
| ./all.bash |
| ``` |
| |
| You may prefer to run `all.bash` only when you push (which happens when you run |
| `git codereview mail`). You'll need a small script to discard the arguments |
| that the pre-push hook is called with. Make this the contents of |
| `.git/hooks/pre-push`: |
| |
| ``` |
| #!/bin/sh |
| ./all.bash |
| ``` |
| |
| and then |
| |
| ``` |
| chmod +x .git/hooks/pre-push |
| ``` |
| |
| ### Running Linters/Formatters/Tests |
| |
| The `all.bash` script can be used to selectively run actions on the source |
| (e.g. linters, code formatters, or tests). Run `./all.bash help` to see a list |
| of supported actions. |
| |
| Some actions are not run by the default invocation of `./all.bash` that is |
| executed in the commit hook. Notably, the `prettier` command is not run, |
| because it has a dependency on nodejs, which is otherwise not needed and which |
| not all developers have installed on their system. |
| |
| If you are modifying CSS or Javascript and you do not have docker installed, |
| install prettier as described at https://prettier.io/docs/en/install.html, |
| and run `./all.bash prettier` to format your changes before mailing your CL. |