Skip to content

Commit 1ce2750

Browse files
committed
Add githooks directory
Add a `githooks` directory. Copy the sample pre-commit hook into it. Add a section to the README explaining how to take advantage of the githooks. The sample pre-commit hook includes checks for trailing whitespace that we are seeing occasionally in PRs. Done in preparation for adding a clippy githook.
1 parent 362d439 commit 1ce2750

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,17 @@ In order to speed up the review process the CI pipeline can be run locally using
125125
skipped when using `act` due to caching being unsupported at this time. We do
126126
not *actively* support `act` but will merge PRs fixing `act` issues.
127127

128+
### Githooks
129+
130+
To assist devs in catching errors _before_ running CI we provide some githooks. If you do not
131+
already have locally configured githooks you can use the ones in this repository by running, in the
132+
root directory of the repository:
133+
```
134+
git config --local core.hooksPath githooks/
135+
```
136+
137+
Alternatively add symlinks in your `.git/hooks` directory to any of the githooks we provide.
138+
128139
## Policy on Altcoins/Altchains
129140

130141
Patches which add support for non-Bitcoin cryptocurrencies by adding constants

githooks/pre-commit

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/bin/sh
2+
#
3+
# Verify what is about to be committed. Called by "git commit" with no
4+
# arguments. The hook should exit with non-zero status after issuing an
5+
# appropriate message if it wants to stop the commit.
6+
7+
if git rev-parse --verify HEAD >/dev/null 2>&1
8+
then
9+
against=HEAD
10+
else
11+
# Initial commit: diff against an empty tree object
12+
against=$(git hash-object -t tree /dev/null)
13+
fi
14+
15+
# If you want to allow non-ASCII filenames set this variable to true.
16+
allownonascii=$(git config --bool hooks.allownonascii)
17+
18+
# Redirect output to stderr.
19+
exec 1>&2
20+
21+
# Cross platform projects tend to avoid non-ASCII filenames; prevent
22+
# them from being added to the repository. We exploit the fact that the
23+
# printable range starts at the space character and ends with tilde.
24+
if [ "$allownonascii" != "true" ] &&
25+
# Note that the use of brackets around a tr range is ok here, (it's
26+
# even required, for portability to Solaris 10's /usr/bin/tr), since
27+
# the square bracket bytes happen to fall in the designated range.
28+
test $(git diff --cached --name-only --diff-filter=A -z $against |
29+
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
30+
then
31+
cat <<\EOF
32+
Error: Attempt to add a non-ASCII file name.
33+
34+
This can cause problems if you want to work with people on other platforms.
35+
36+
To be portable it is advisable to rename the file.
37+
38+
If you know what you are doing you can disable this check using:
39+
40+
git config hooks.allownonascii true
41+
EOF
42+
exit 1
43+
fi
44+
45+
# If there are whitespace errors, print the offending file names and fail.
46+
exec git diff-index --check --cached $against --

0 commit comments

Comments
 (0)