git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3] post-receive-email: explicitly set Content-Type header

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 9, 2011, 14:11 UTC
Message-ID
<7vy5vpv11n.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1320836458-24088-1-git-send-email-Alex.Crezoff@gmail.com>
Alexey Shumkin <alex.crezoff@gmail.com> writes:
Show 16 quoted lines
> Some email clients (e.g. claws-mail) incorrectly display
> message body when there is no Content-Type header and charset
> explicitly defined.
> So, set explicitly Content-Type header. Its charset
> can be defined with hooks.emailcharset config variable.
>
> NB: This above-mentioned charset may differ from i18n.logOutputEncoding,
> because e.g. gitweb expects (for now) i18n.logOutputEncoding set to UTF-8
> to display logs correctly.
>
> Also, introduce hooks.gitopts config variable
> with the default '-c core.quotepath=false'.
> This takes into account that we want to see pretty email-message
> with well-looking messages and list of changed filenames.
> And usually non-ASCII filenames are in the same
> encoding that commit messages are.
(style) Why such an extremely ragged looking line-wrap of paragraphs?
> Signed-off-by: Alexey Shumkin <Alex.Crezoff@gmail.com>
> ---

In this space, please describe what happened during v1 and v2, and how is this round different to help reviewers. Pointers to list archive, e.g. http://thread.gmane.org/gmane.comp.version-control.git/181737, would be helpful.

People involved in v1/v2 discussion are missing from the Cc: line. Please do not give a false impression that you are hiding from them.

Show 12 quoted lines
> diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email
> index ba077c1..913be89 100755
> --- a/contrib/hooks/post-receive-email
> +++ b/contrib/hooks/post-receive-email
> @@ -65,6 +65,14 @@
>  #   Default is "--stat --summary --find-copies-harder". Add -p to those
>  #   options to include a unified diff of changes in addition to the usual
>  #   summary output.
> +# hooks.gitopts
> +#   git options for the git diff-tree invocation that shows changes.
> +#   Default is '-c core.quotepath=false' to be able to see non-ASCII filenames
> +#   used in a project.

We do not particularly appreciate a patch that does two unrelated things ("they are both related to post-receive-email" is not an argument). Wouldn't this be useful even if the change to add hooks.emailcharset turned out to be unwanted, or vice versa?

> +# hooks.emailcharset
> +#   The charset used in Content-Type header. UTF-8, if not specified.
> +#   It can differ from i18n.logOutputEncoding (not to mess-up with gitweb
> +#   which expects i18n.logOutputEncoding to be set to UTF-8)
Why "UTF-8" instead of "i18n.logoutputencoding" if not specified?
Show 28 quoted lines
> @@ -234,6 +242,9 @@ generate_email_header()
>  	cat <<-EOF
>  	To: $recipients
>  	Subject: ${emailprefix}$projectdesc $refname_type $short_refname ${change_type}d. $describe
> +	MIME-Version: 1.0
> +	Content-Type: text/plain; charset=$emailcharset
> +	Content-Transfer-Encoding: 8bit
>  	X-Git-Refname: $refname
>  	X-Git-Reftype: $refname_type
>  	X-Git-Oldrev: $oldrev
> ...
> @@ -730,6 +734,19 @@ custom_showrev=$(git config hooks.showrev)
>  maxlines=$(git config hooks.emailmaxlines)
>  diffopts=$(git config hooks.diffopts)
>  : ${diffopts:="--stat --summary --find-copies-harder"}
> +gitopts=$(git config hooks.gitopts || echo '-c core.quotepath=false')
> +emailcharset=$(git config hooks.emailcharset || echo 'UTF-8')
> +
> +projectdesc=$(sed -ne '1p' "$GIT_DIR/description" 2>/dev/null)
> +# Check if the description is unchanged from it's default, and shorten it to
> +# a more manageable length if it is
> +if expr "$projectdesc" : "Unnamed repository.*$" >/dev/null
> +then
> +	projectdesc="UNNAMED PROJECT"
> +fi
> +# Leave description in UTF-8 to be used in the Subject header
> +# But convert it to an hooks.emailcharset encoding to be used in a message body
> +projectdesc_e=$(echo $projectdesc | iconv -f UTF-8 -t $emailcharset 2>/dev/null)

Hmm, this generates a piece of e-mail whose subject line is in UTF-8 (without B/Q quoting) and message body is in totally different encoding. Is it what mailers really want to see?

It almost seems backwards; converting the payload to UTF-8 and always sending UTF-8 would be a simpler approach, methinks.

Previous: Alexey ShumkinNext: Alexey Shumkin
Message 10 of 12 in “post-receive-email: explicitly set Content-Type header”
  1. post-receive-email: explicitly set Content-Type headerAlexey Shumkin, Sep 20, 2011
  2. post-receive-email: explicitly set Content-Type headerAlexey Shumkin, Sep 20, 2011
  3. Johannes SixtSep 20, 2011
  4. Shumkin AlexeySep 20, 2011
  5. Johannes SixtSep 20, 2011
  6. Jonathan NiederOct 7, 2011
  7. Alexey ShumkinOct 7, 2011
  8. Jonathan NiederOct 7, 2011
  9. post-receive-email: explicitly set Content-Type headerAlexey Shumkin, Nov 9, 2011
  10. Junio C HamanoNov 9, 2011
  11. Alexey ShumkinNov 9, 2011
  12. Jakub NarebskiSep 20, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.