summaryrefslogtreecommitdiff
path: root/maintainer_old/checkpatch/checkpatch.sh
blob: e0eb6a45a2efad1e70793c8c7b6637f60abda137 (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash

check_fixes() {
	local TAG=$(echo $1 | sed -e 's/^[ ]*//' | sed 's/^[F,f]ixes://')
	local HASH=$(echo $TAG | awk '{print $1}')

	git log -1 --format='%s' $HASH &> /dev/null

	if [ $? -ne 0 ]; then
		echo "Patch $HASH"
		echo "$TAG"
		echo "...does not exist"
		exit 1
	fi

	local BROKEN_SUB=$(git log -1 --format='%s' $HASH)

	local SUB=$(echo $TAG | awk 'gsub($1, "")'| \
		    sed -e 's/^[ ]*//' | \
		    sed -e 's/^(//'  | \
		    sed -e 's/)$//'  |\
		    sed -e 's/^"//' | \
		    sed -e 's/"$//')


	if [ "$SUB" != "$BROKEN_SUB" ]; then
		echo "Broken patch does not match Fixes tag:"
		echo "PATCH: $HASH"
	else
		echo "Strings match"
	fi

}

check_patch() {
	local PATCH=$1
	local COMMIT_MSG=$(git log -1 $PATCH)

	local HAS_FIXES=`echo "$COMMIT_MSG" |grep -i fixes:`

	if [ -n "$HAS_FIXES" ]; then
		check_fixes "$HAS_FIXES"
	fi
}

LAST=$1

PATCHES=$(for i in `git log --oneline --no-merges $LAST.. | awk '{print $1}'`; do echo $i; done)

for i in $PATCHES; do
	check_patch $i
done