| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
							- #!/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}
 
- # "Username may only contain alphanumeric characters or dashes and cannot begin with a dash"
 
- githubUsernameRegex='[a-zA-Z0-9][a-zA-Z0-9-]+'
 
- # https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
 
- dcoPrefix='Signed-off-by:'
 
- dcoRegex="^(Docker-DCO-1.1-)?$dcoPrefix ([^<]+) <([^<>@]+@[^<>]+)>( \\(github: ($githubUsernameRegex)\\))?$"
 
- check_dco() {
 
- 	grep -qE "$dcoRegex"
 
- }
 
- 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
 
- 	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" | check_dco; 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/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work'
 
- 			echo
 
- 		} >&2
 
- 		false
 
- 	fi
 
- fi
 
 
  |