#!/bin/bash # Copyright 2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # Author: Ulrich Müller refname=$1 oldrev=$2 newrev=$3 # Filenames must contain only the characters [A-Za-z0-9._+-] and must # not begin with a dot, a hyphen, or a plus sign. # https://devmanual.gentoo.org/general-concepts/tree/#what-belongs-in-the-tree%3F # https://devmanual.gentoo.org/ebuild-writing/file-format/#file-naming-rules LC_ALL=C regex='^([A-Za-z0-9_][A-Za-z0-9._+-]*/)*[A-Za-z0-9_][A-Za-z0-9._+-]*$' git diff -z --name-only --diff-filter=ACR "${oldrev}" "${newrev}" \ | while read -r -d $'\0' path do if ! [[ ${path} =~ ${regex} ]]; then echo "Path \"${path}\" violates file naming rules" >&2 exit 1 fi done exit 0