> 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. Completely > untested --- basic sanity checking, testing, and tweaks to allow > overriding the choice of encoding left as an exercise to the reader. > > Based on patches by Gerrit Pape and Jeff King and advice from Johannes > Sixt. > > Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> > --- > More background: > http://thread.gmane.org/gmane.comp.version-control.git/124350/focus=124355 > > contrib/hooks/post-receive-email | 15 +++++++++------ > 1 files changed, 9 insertions(+), 6 deletions(-) > > diff --git a/contrib/hooks/post-receive-email > b/contrib/hooks/post-receive-email index ba077c13..bc603b02 100755 > --- a/contrib/hooks/post-receive-email > +++ b/contrib/hooks/post-receive-email > @@ -234,6 +234,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=utf-8 > + Content-Transfer-Encoding: 8bit > X-Git-Refname: $refname > X-Git-Reftype: $refname_type > X-Git-Oldrev: $oldrev > @@ -462,7 +465,7 @@ generate_delete_branch_email() > echo " was $oldrev" > echo "" > echo $LOGEND > - git show -s --pretty=oneline $oldrev > + git diff-tree --encoding=UTF-8 -s --pretty=oneline $oldrev > echo $LOGEND > } > > @@ -538,11 +541,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 > ;; > *) > @@ -562,7 +565,7 @@ generate_delete_atag_email() > echo " was $oldrev" > echo "" > echo $LOGEND > - git show -s --pretty=oneline $oldrev > + git diff-tree --encoding=UTF-8 -s --pretty=oneline $oldrev > echo $LOGEND > } > > @@ -608,7 +611,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 @@ -627,7 +630,7 @@ generate_delete_general_email() > echo " was $oldrev" > echo "" > echo $LOGEND > - git show -s --pretty=oneline $oldrev > + git diff-tree --encoding=UTF-8 -s --pretty=oneline $oldrev > echo $LOGEND > } > As I understand, this patches make email message with explicitly set Content-Type header (it's ok) and UTF-8 encoding (that is a subject to discuss). 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html