From: Junio C Hamano Date: Wed, 18 Aug 2010 19:16:50 +0000 (-0700) Subject: Merge branch 'kf/post-receive-sample-hook' X-Git-Tag: v1.7.3-rc0~72 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/c1807defb83299dd85117c0e6b94fb7d4ade97c7?ds=inline;hp=-c Merge branch 'kf/post-receive-sample-hook' * kf/post-receive-sample-hook: post-receive-email: optional message line count limit --- c1807defb83299dd85117c0e6b94fb7d4ade97c7 diff --combined contrib/hooks/post-receive-email index 09c524105c,11e51ec10d..0085086437 --- a/contrib/hooks/post-receive-email +++ b/contrib/hooks/post-receive-email @@@ -55,6 -55,11 +55,11 @@@ # "t=%s; printf 'http://.../?id=%%s' \$t; echo;echo; git show -C \$t; echo" # Be careful if "..." contains things that will be expanded by shell "eval" # or printf. + # hooks.emailmaxlines + # The maximum number of lines that should be included in the generated + # email body. If not specified, there is no limit. + # Lines beyond the limit are suppressed and counted, and a final + # line is added indicating the number of suppressed lines. # # Notes # ----- @@@ -84,6 -89,7 +89,7 @@@ generate_email( oldrev=$(git rev-parse $1) newrev=$(git rev-parse $2) refname="$3" + maxlines=$4 # --- Interpret # 0000->1234 (create) @@@ -192,7 -198,12 +198,12 @@@ fn_name=atag ;; esac - generate_${change_type}_${fn_name}_email + + if [ -z "$maxlines" ]; then + generate_${change_type}_${fn_name}_email + else + generate_${change_type}_${fn_name}_email | limit_lines $maxlines + fi generate_email_footer } @@@ -203,7 -214,7 +214,7 @@@ generate_email_header( # Generate header cat <<-EOF To: $recipients - Subject: ${emailprefix}$projectdesc $refname_type, $short_refname, ${change_type}d. $describe + Subject: ${emailprefix}$projectdesc $refname_type $short_refname ${change_type}d. $describe X-Git-Refname: $refname X-Git-Reftype: $refname_type X-Git-Oldrev: $oldrev @@@ -642,6 -653,24 +653,24 @@@ show_new_revisions( } + limit_lines() + { + lines=0 + skipped=0 + while IFS="" read -r line; do + lines=$((lines + 1)) + if [ $lines -gt $1 ]; then + skipped=$((skipped + 1)) + else + printf "%s\n" "$line" + fi + done + if [ $skipped -ne 0 ]; then + echo "... $skipped lines suppressed ..." + fi + } + + send_mail() { if [ -n "$envelopesender" ]; then @@@ -679,6 -708,7 +708,7 @@@ announcerecipients=$(git config hooks.a envelopesender=$(git config hooks.envelopesender) emailprefix=$(git config hooks.emailprefix || echo '[SCM] ') custom_showrev=$(git config hooks.showrev) + maxlines=$(git config hooks.emailmaxlines) # --- Main loop # Allow dual mode: run from the command line just like the update hook, or @@@ -691,6 -721,6 +721,6 @@@ if [ -n "$1" -a -n "$2" -a -n "$3" ]; t else while read oldrev newrev refname do - generate_email $oldrev $newrev $refname | send_mail + generate_email $oldrev $newrev $refname $maxlines | send_mail done fi