diff options
Diffstat (limited to 'scripts/send-pull-request')
| -rwxr-xr-x | scripts/send-pull-request | 68 | 
1 files changed, 26 insertions, 42 deletions
| diff --git a/scripts/send-pull-request b/scripts/send-pull-request index 21eb302169..8d0bd343ee 100755 --- a/scripts/send-pull-request +++ b/scripts/send-pull-request @@ -1,6 +1,7 @@  #!/bin/bash  AUTO=0  AUTO_CL=0 +GITSOBCC=""  # Prevent environment leakage to these vars.  unset TO @@ -59,10 +60,11 @@ while getopts "achp:t:" OPT; do  	case $OPT in  	a)  		AUTO_CL=1 -		AUTO=1 -		;; +		# Fall through to include -c +		;&  	c)  		AUTO=1 +		GITSOBCC="--signed-off-by-cc"  		;;  	h)  		usage @@ -130,48 +132,30 @@ if [ -z "$TO" ] && [ -z "$AUTO_CC" ]; then  fi -# Generate report for the user and require confirmation before sending -cat <<EOM -The following patches: -$(for PATCH in $PDIR/*.patch; do echo "    $PATCH"; done) +# Convert the collected addresses into git-send-email argument strings +export IFS=$',' +GIT_TO=$(for R in $TO; do echo -n "--to='$R' "; done) +GIT_CC=$(for R in $AUTO_CC; do echo -n "--cc='$R' "; done) +unset IFS -will now be sent via the git send-email command. Git will prompt you before -sending any email. -EOM -echo "Continue? [y/N] " -read cont - -if [ "$cont" == "y" ] || [ "$cont" == "Y" ]; then -	ERROR=0 -	export IFS=$',' -	GIT_TO=$(for R in $TO; do echo -n "--to='$R' "; done) -	GIT_CC=$(for R in $AUTO_CC; do echo -n "--cc='$R' "; done) -	unset IFS -	for PATCH in $PDIR/*patch; do -		if [ $AUTO -eq 1 ]; then -			if [ $PATCH == "$CL" ] && [ $AUTO_CL -eq 1 ]; then -				# Send the cover letter to every recipient, both -				# specified as well as harvested. -				eval "git send-email $GIT_TO $GIT_CC --confirm=always --no-chain-reply-to --suppress-cc=all $PATCH" -			else -				# Send the patch to the specified recipients and -				# those git finds in this specific patch. -				eval "git send-email $GIT_TO --confirm=always --no-chain-reply-to --signed-off-by-cc $PATCH" -			fi -		else -			# Only send to the explicitly specified recipients -			eval "git send-email $GIT_TO --confirm=always --no-chain-reply-to --suppress-cc=all $PATCH" -		fi -		if [ $? -eq 1 ]; then -			ERROR=1 -		fi -	done - -	if [ $ERROR -eq 1 ]; then -		echo "ERROR: Failed to send one or more messages." +# Handoff to git-send-email. It will perform the send confirmation. +PATCHES=$(echo $PDIR/*.patch) +if [ $AUTO_CL -eq 1 ]; then +	# Send the cover letter to every recipient, both specified as well as +	# harvested. Then remove it from the patches list. +	eval "git send-email $GIT_TO $GIT_CC --confirm=always --no-chain-reply-to --suppress-cc=all $CL" +	if [ $? -eq 1 ]; then +		echo "ERROR: failed to send cover-letter with automatic recipients." +		exit 1  	fi -else -	echo "Send aborted." +	PATCHES=${PATCHES/"$CL"/}  fi +# Send the patch to the specified recipients and, if -c was specified, those git +# finds in this specific patch. +eval "git send-email $GIT_TO --confirm=always --no-chain-reply-to $GITSOBCC $PATCHES" +if [ $? -eq 1 ]; then +	echo "ERROR: failed to send patches." +	exit 1 +fi | 
