Skip to content
This repository was archived by the owner on Nov 30, 2022. It is now read-only.

Commit 7001926

Browse files
committed
Merge #175: Add githooks
700dc48 Add githooks (Tobin C. Harding) Pull request description: As we do in other rust-bitcoin repositories add a `githooks` directory with a pre-commit hook to catch mistake during development. Add a section to the readme with instructions on using the githooks. ACKs for top commit: apoelstra: ACK 700dc48 Tree-SHA512: 8502590b189f9ff62a84d3d917b8973f29c331ee9494acbb604b6aee3013052b13294d73542cb5f0ec32661118d24d2882c22ca31e2602e8fc4c45ac25d3fed2
2 parents 75c068f + 700dc48 commit 7001926

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,14 @@ This library should always compile with any combination of features on **Rust 1.
1616
## Contributions
1717

1818
Contributions are welcome, including additional hash function implementations.
19+
20+
### Githooks
21+
22+
To assist devs in catching errors _before_ running CI we provide some githooks. If you do not
23+
already have locally configured githooks you can use the ones in this repository by running, in the
24+
root directory of the repository:
25+
```
26+
git config --local core.hooksPath githooks/
27+
```
28+
29+
Alternatively add symlinks in your `.git/hooks` directory to any of the githooks we provide.

githooks/pre-commit

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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+
git diff-index --check --cached $against -- || exit 1
47+
48+
# Check that code lints cleanly.
49+
cargo clippy --all-features -- -D warnings || exit 1

0 commit comments

Comments
 (0)