From: Alexey Shumkin <zapped@mail.ru>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: git@vger.kernel.org, Gerrit Pape <pape@smarden.org>,
Johannes Sixt <j6t@kdbg.org>,
Michael Haggerty <mhagger@alum.mit.edu>,
Jon Jensen <jon@endpoint.com>
Subject: Re: [PATCH 2/2] post-receive-email: defend against non UTF-8 i18n.logoutputencoding setting
Date: Wed, 14 Mar 2012 23:36:09 +0400 [thread overview]
Message-ID: <20120314233609.04a2a37b@zappedws> (raw)
In-Reply-To: <20120308115957.GB2750@burratino>
I'd like to remind then following aspect
> My proposition was in to send email message in explicitly defined
> custom encoding. Why? In development process under Windows non-UTF-8
> encoding is used (cp1251 in my case). So, filenames have this
> encoding, and as we know Git stores their names as is - in cp1251 -
> without a conversion. And filenames are also used in diff-stat (with
> core.quotepath= false, BTW, I did not take into account this config)
> without any conversion. So if we'll make all text in UTF-8 but
> filenames are still non-UTF-8, email would look corrupted.
this is citation from
http://thread.gmane.org/gmane.comp.version-control.git/181737/focus=183076
> Johannes Sixt wrote:
> > Am 9/20/2011 12:42, schrieb Shumkin Alexey:
>
> >> 1. post-send-mail uses description file of a repo
> >> 2. gitweb also uses this file and AFAIK it assumes one to be in
> >> UTF-8 (I do not know whether it can be changed there but I tested
> >> gitweb once long time ago)
> >> 3. So if i18n.logoutputencoding is not UTF-8 we get a message
> >> composed with mixed encodings. This fact oblidge us to encode
> >> headers (as quoted printable at least) and synchronize body
> >> message that contain repo description (in UTF-8) and diffstat (in
> >> i18n.logoutputencoding).
> [...]
> > In this case, it may make sense to have a separate setting, but you
> > should call git like this:
> >
> > git -c "i18n.logoutputencoding=$emailcharset" show ...
> > git -c "i18n.logoutputencoding=$emailcharset" rev-list
> > --pretty ...
>
> Something like this, I suppose?
>
> This teaches post-receive-email to use plumbing where possible and to
> explicitly declare what encoding it expects output to use.
>
> Based on an advice from Alexey Shumkin and Johannes Sixt, but all bugs
> are mine. Making the email charset configurable is left as an
> exercise for the interested reader.
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---
> contrib/hooks/post-receive-email | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/contrib/hooks/post-receive-email
> b/contrib/hooks/post-receive-email index dc184d0b..b59e03cd 100755
> --- a/contrib/hooks/post-receive-email
> +++ b/contrib/hooks/post-receive-email
> @@ -464,7 +464,7 @@ generate_delete_branch_email()
> echo " was $oldrev"
> echo ""
> echo $LOGBEGIN
> - git show -s --pretty=oneline $oldrev
> + git diff-tree --encoding=UTF-8 -s --pretty=oneline $oldrev
> echo $LOGEND
> }
>
> @@ -540,11 +540,11 @@ generate_atag_email()
> # performed on them
> if [ -n "$prevtag" ]; then
> # Show changes since the previous release
> - git rev-list --pretty=short
> "$prevtag..$newrev" | git shortlog
> + git shortlog --encoding=UTF-8
> "$prevtag..$newrev" else
> # No previous tag, show all the changes
> since time # began
> - git rev-list --pretty=short $newrev | git
> shortlog
> + git shortlog --encoding=UTF-8 "$newrev"
> fi
> ;;
> *)
> @@ -564,7 +564,7 @@ generate_delete_atag_email()
> echo " was $oldrev"
> echo ""
> echo $LOGBEGIN
> - git show -s --pretty=oneline $oldrev
> + git diff-tree --encoding=UTF-8 -s --pretty=oneline $oldrev
> echo $LOGEND
> }
>
> @@ -610,7 +610,7 @@ generate_general_email()
> echo ""
> if [ "$newrev_type" = "commit" ]; then
> echo $LOGBEGIN
> - git show --no-color --root -s --pretty=medium $newrev
> + git diff-tree --encoding=UTF-8 --root -s
> --pretty=oneline $newrev echo $LOGEND
> else
> # What can we do here? The tag marks an object that
> is not @@ -629,7 +629,7 @@ generate_delete_general_email()
> echo " was $oldrev"
> echo ""
> echo $LOGBEGIN
> - git show -s --pretty=oneline $oldrev
> + git diff-tree --encoding=UTF-8 -s --pretty=oneline $oldrev
> echo $LOGEND
> }
>
next prev parent reply other threads:[~2012-03-14 19:46 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-08 11:51 [PATCH/RFC 0/2] post-receive-email: declaring and consistently using one output encoding Jonathan Nieder
2012-03-08 11:57 ` [PATCH 1/2] hooks/post-receive-email: set encoding to utf-8 Jonathan Nieder
2012-03-08 11:59 ` [PATCH 2/2] post-receive-email: defend against non UTF-8 i18n.logoutputencoding setting Jonathan Nieder
2012-03-08 13:50 ` Jeff King
2012-03-08 13:52 ` Jonathan Nieder
2012-03-14 19:36 ` Alexey Shumkin [this message]
2012-03-14 19:55 ` Jonathan Nieder
2012-03-08 19:12 ` [PATCH/RFC 0/2] post-receive-email: declaring and consistently using one output encoding Junio C Hamano
2012-03-14 17:54 ` Jon Jensen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120314233609.04a2a37b@zappedws \
--to=zapped@mail.ru \
--cc=git@vger.kernel.org \
--cc=j6t@kdbg.org \
--cc=jon@endpoint.com \
--cc=jrnieder@gmail.com \
--cc=mhagger@alum.mit.edu \
--cc=pape@smarden.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).