blob: 0ad8b5b83d209d876f5f55e36d3f31d954bd696d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#!/bin/bash
# gentoo-infra: infra/githooks.git:update-04-utf8
# Copyright 2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2 or later
# Author: Michał Górny <mgorny@gentoo.org>
refname=$1
oldrev=$2
newrev=$3
export LC_MESSAGES=C
# special cases
zeros=0000000000000000000000000000000000000000
# branch removal
[[ ${newrev} == "${zeros}" ]] && exit 0
# new branch; try to find a merge base with master
if [[ ${oldrev} == "${zeros}" && ${refname} != refs/heads/master ]]; then
mergebase=$(git merge-base refs/heads/master "${newrev}")
[[ -n ${mergebase} ]] && oldrev=${mergebase}
[[ -z ${mergebase} ]] && echo "WARNING: No common commits with master!"
fi
ret=0
while read commithash; do
# verify that the commit object (including author, committer, commit
# message) is valid UTF-8
if ! git cat-file -p "${commithash}" | iconv -f utf8 -t utf8 &>/dev/null
then
echo "Commit ${commithash} contains invalid UTF-8 in the commit metadata"
ret=1
fi
done < <(git rev-list "${oldrev}..${newrev}")
exit ${ret}
|