Prek
<!--
Part of the Carbon Language project, under the Apache License v2.0 with LLVM
Exceptions. See /LICENSE for license information.
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-->
prek is the Carbon pre-submit, style, and lint checker. Running it is
mandatory before submitting any changes.
Running prek
To run prek on all files:
prek run -a
To validate a specific list of files:
prek run --files <files>
Running prek in a Jujutsu (jj) workspace
If you are working in a Jujutsu workspace, running prek directly will fail
because it expects a standard Git repository structure. Instead, use the helper
script:
./scripts/jj_prek.sh
This script runs prek on all files that have changed between trunk and your
current Jujutsu @ change.
Note that the script always compares against trunk. If your change is based on
another bookmark rather than on trunk, the script also checks the files
changed by that underlying change, so a reported failure may not be in your own
work.
Hooks that rewrite files
Some hooks, notably clang-format and rumdl, fix problems in place rather
than only reporting them. When they do, prek reports a failure and exits
non-zero even though the tree is now correct.
Re-run prek after any failure that modified files, and treat the second, clean
run as the result. Review what it changed: a reflow is expected, but a content
change may not be what you intended.
Prek dependency errors
[!TIP] If prek fails with an error about resolving dependencies or security
policy, you may be running in a restricted environment where the
special-purpose gpkg tool is required. Prefix the command with gpkg, for
example: gpkg prek run -a or gpkg ./scripts/jj_prek.sh.