|
@@ -0,0 +1,47 @@
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+source "$(dirname "$BASH_SOURCE")/.validate"
|
|
|
+
|
|
|
+adds=$(validate_diff --numstat | awk '{ s += $1 } END { print s }')
|
|
|
+dels=$(validate_diff --numstat | awk '{ s += $2 } END { print s }')
|
|
|
+notDocs="$(validate_diff --numstat | awk '$3 !~ /^docs\// { print $3 }')"
|
|
|
+
|
|
|
+: ${adds:=0}
|
|
|
+: ${dels:=0}
|
|
|
+
|
|
|
+if [ $adds -eq 0 -a $dels -eq 0 ]; then
|
|
|
+ echo '0 adds, 0 deletions; nothing to validate! :)'
|
|
|
+elif [ -z "$notDocs" -a $adds -le 1 -a $dels -le 1 ]; then
|
|
|
+ echo 'Congratulations! DCO small-patch-exception material!'
|
|
|
+else
|
|
|
+ dcoPrefix='Docker-DCO-1.1-Signed-off-by:'
|
|
|
+ dcoRegex="^$dcoPrefix ([^<]+) <([^<>@]+@[^<>]+)> \\(github: (\S+)\\)$"
|
|
|
+ commits=( $(validate_log --format='format:%H%n') )
|
|
|
+ badCommits=()
|
|
|
+ for commit in "${commits[@]}"; do
|
|
|
+ if [ -z "$(git log -1 --format='format:' --name-status "$commit")" ]; then
|
|
|
+ # no content (ie, Merge commit, etc)
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+ if ! git log -1 --format='format:%B' "$commit" | grep -qE "$dcoRegex"; then
|
|
|
+ badCommits+=( "$commit" )
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ if [ ${#badCommits[@]} -eq 0 ]; then
|
|
|
+ echo "Congratulations! All commits are properly signed with the DCO!"
|
|
|
+ else
|
|
|
+ {
|
|
|
+ echo "These commits do not have a proper '$dcoPrefix' marker:"
|
|
|
+ for commit in "${badCommits[@]}"; do
|
|
|
+ echo " - $commit"
|
|
|
+ done
|
|
|
+ echo
|
|
|
+ echo 'Please amend each commit to include a properly formatted DCO marker.'
|
|
|
+ echo
|
|
|
+ echo 'Visit the following URL for information about the Docker DCO:'
|
|
|
+ echo ' https://github.com/dotcloud/docker/blob/master/CONTRIBUTING.md#sign-your-work'
|
|
|
+ echo
|
|
|
+ } >&2
|
|
|
+ false
|
|
|
+ fi
|
|
|
+fi
|