From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Branchaud Subject: Re: [PATCH] Optional limit for number of lines generated by script Date: Wed, 14 Jul 2010 12:41:49 -0400 Message-ID: <4C3DE8CD.5060103@xiplink.com> References: <1279055909-4340-1-git-send-email-kpfleming@digium.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: git@vger.kernel.org To: "Kevin P. Fleming" X-From: git-owner@vger.kernel.org Wed Jul 14 18:42:14 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OZ52E-00040I-Eh for gcvg-git-2@lo.gmane.org; Wed, 14 Jul 2010 18:42:14 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752201Ab0GNQmJ (ORCPT ); Wed, 14 Jul 2010 12:42:09 -0400 Received: from smtp122.iad.emailsrvr.com ([207.97.245.122]:34878 "EHLO smtp122.iad.emailsrvr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751219Ab0GNQmI (ORCPT ); Wed, 14 Jul 2010 12:42:08 -0400 Received: from relay2.r2.iad.emailsrvr.com (localhost [127.0.0.1]) by relay2.r2.iad.emailsrvr.com (SMTP Server) with ESMTP id 46BB344C1DE; Wed, 14 Jul 2010 12:42:02 -0400 (EDT) Received: by relay2.r2.iad.emailsrvr.com (Authenticated sender: mbranchaud-AT-xiplink.com) with ESMTPSA id D81B144C16A; Wed, 14 Jul 2010 12:42:01 -0400 (EDT) User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.10) Gecko/20100528 Thunderbird/3.0.5 In-Reply-To: <1279055909-4340-1-git-send-email-kpfleming@digium.com> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Thanks for addressing my comments! M. On 10-07-13 05:18 PM, Kevin P. Fleming wrote: > We have become used to the features of svnmailer when used with Subversion, > and one of those useful features is that it can limit the maximum length > (in lines) of a commit email message. This is terribly useful since once the > goes beyond a reasonable number of lines, nobody is going to read the remainder, > and if they really want the entire contents of the commits, they can use > git itself to get them using the revision IDs present in the message already. > > Change the post-receive-email script to respond to an 'emailmaxlines' config key > which, if specified, will limit the number of lines generated (including > headers); any lines beyond the limit are suppressed, and a final line is added > indicating the number that were suppressed. > --- > contrib/hooks/post-receive-email | 33 ++++++++++++++++++++++++++++++++- > 1 files changed, 32 insertions(+), 1 deletions(-) > > diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email > index 30ae63d..d3b5fab 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 (including its headers). 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 > # ----- > @@ -642,6 +647,27 @@ show_new_revisions() > } > > > +limit_lines() > +{ > + lines=0 > + skipped=0 > + while IFS="" read line > + do > + lines=$((lines + 1)) > + if [ $lines -gt $1 ] > + then > + skipped=$((skipped + 1)) > + else > + echo "$line" > + fi > + done > + if [ $skipped -ne 0 ] > + then > + echo "... $skipped lines suppressed ..." > + fi > +} > + > + > send_mail() > { > if [ -n "$envelopesender" ]; then > @@ -679,6 +705,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 +718,10 @@ if [ -n "$1" -a -n "$2" -a -n "$3" ]; then > else > while read oldrev newrev refname > do > - generate_email $oldrev $newrev $refname | send_mail > + if [ -z "$maxlines" ]; then > + generate_email $oldrev $newrev $refname | send_mail > + else > + generate_email $oldrev $newrev $refname | limit_lines $maxlines | send_mail > + fi > done > fi