diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-08-18 23:16:50 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-08-18 23:16:50 +0400 |
commit | c1807defb83299dd85117c0e6b94fb7d4ade97c7 (patch) | |
tree | acbfdc4b3c5a989f1f66d806f789d8b9dfdaa5d2 /contrib/hooks | |
parent | cdcf08e0689ca030dcfc5aede5eb81d4d8e3f77c (diff) | |
parent | b03e7b7d76e79de14e76df5d4e2ee727f4522a95 (diff) |
Merge branch 'kf/post-receive-sample-hook'
* kf/post-receive-sample-hook:
post-receive-email: optional message line count limit
Diffstat (limited to 'contrib/hooks')
-rwxr-xr-x | contrib/hooks/post-receive-email | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email index 09c524105cf..00850864371 100755 --- a/contrib/hooks/post-receive-email +++ b/contrib/hooks/post-receive-email @@ -55,6 +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 @@ generate_email() oldrev=$(git rev-parse $1) newrev=$(git rev-parse $2) refname="$3" + maxlines=$4 # --- Interpret # 0000->1234 (create) @@ -192,7 +198,12 @@ generate_email() 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 } @@ -642,6 +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 @@ announcerecipients=$(git config hooks.announcelist) 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 @@ if [ -n "$1" -a -n "$2" -a -n "$3" ]; then else while read oldrev newrev refname do - generate_email $oldrev $newrev $refname | send_mail + generate_email $oldrev $newrev $refname $maxlines | send_mail done fi |