mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-14 20:18:39 +00:00
62 lines
2 KiB
Bash
Executable file
62 lines
2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
die() {
|
|
printf "%s\n" "$@"
|
|
exit 1
|
|
}
|
|
|
|
HEAD="${1:-HEAD}"
|
|
|
|
BASE_DIR="$(dirname "$0")"
|
|
|
|
if printf '%s' "$HEAD" | grep -q '\.\.'; then
|
|
# Check the explicitly specified range from the argument.
|
|
REFS=( $(git log --reverse --format='%H' "$HEAD") ) || die "not a valid range (HEAD is $HEAD)"
|
|
else
|
|
BASE_REF="refs/remotes/origin"
|
|
NM_UPSTREAM_REMOTE=
|
|
|
|
if [ "$NM_CHECKPATCH_FETCH_UPSTREAM" == 1 ]; then
|
|
NM_UPSTREAM_REMOTE="nm-upstream-$(date '+%Y%m%d-%H%M%S')-$RANDOM"
|
|
git remote add "$NM_UPSTREAM_REMOTE" https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
|
|
BASE_REF="refs/remotes/$NM_UPSTREAM_REMOTE"
|
|
git fetch origin "$(git rev-parse "$HEAD")" --no-tags --unshallow
|
|
git fetch "$NM_UPSTREAM_REMOTE" \
|
|
--no-tags \
|
|
"refs/heads/main:$BASE_REF/main" \
|
|
"refs/heads/nm-*:$BASE_REF/nm-*" \
|
|
|| die "failure to fetch from https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git"
|
|
fi
|
|
|
|
# the argument is only a single ref (or the default "HEAD").
|
|
# Find all commits that branch off one of the stable branches or main
|
|
# and lead to $HEAD. These are the commits of the feature branch.
|
|
|
|
RANGES=( $(git show-ref | sed 's#^\(.*\) '"$BASE_REF/"'\(main\|nm-1-[0-9]\+\)$#\1..'"$HEAD"'#p' -n) )
|
|
|
|
[ "${#RANGES[@]}" != 0 ] || die "cannot detect git-ranges (HEAD is $(git rev-parse "$HEAD"))"
|
|
|
|
REFS=( $(git log --reverse --format='%H' "${RANGES[@]}") )
|
|
|
|
if [ "${#REFS[@]}" == 0 ] ; then
|
|
# no refs detected. This means, $HEAD is already on main (or one of the
|
|
# stable nm-1-* branches. Just check the patch itself.
|
|
REFS=( "$HEAD" )
|
|
fi
|
|
|
|
if [ -n "$NM_UPSTREAM_REMOTE" ]; then
|
|
git remote remove "$NM_UPSTREAM_REMOTE"
|
|
fi
|
|
fi
|
|
|
|
SUCCESS=0
|
|
for H in "${REFS[@]}"; do
|
|
export NM_CHECKPATCH_HEADER=$'\n'">>> VALIDATE \"$(git log --oneline -n1 "$H")\""
|
|
git format-patch -U65535 --stdout -1 "$H" | "$BASE_DIR/checkpatch.pl"
|
|
if [ $? != 0 ]; then
|
|
SUCCESS=1
|
|
fi
|
|
done
|
|
|
|
exit $SUCCESS
|