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@xxxxxxxxx> > --- > 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 > } > -- 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