Re: [PATCH v3] am: invoke perl's strftime in C locale
On Fri, Jan 18, 2013 at 12:36:46PM -0800, Junio C Hamano wrote: Dmitry V. Levin l...@altlinux.org writes: This fixes hg patch format support for locales other than C and en_*. Before the change, git-am was making Date: line from hg changeset metadata according to the current locale, and this line was rejected later with invalid date format diagnostics because localized date strings are not supported. Reported-by: Gleb Fotengauer-Malinovskiy gle...@altlinux.org Signed-off-by: Dmitry V. Levin l...@altlinux.org --- v3: alternative implementation using setlocale(LC_TIME, C) git-am.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/git-am.sh b/git-am.sh index c682d34..8677d8c 100755 --- a/git-am.sh +++ b/git-am.sh @@ -334,7 +334,8 @@ split_patches () { # Since we cannot guarantee that the commit message is in # git-friendly format, we put no Subject: line and just consume # all of the message as the body - perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 } + perl -M'POSIX qw(strftime :locale_h)' -ne ' + BEGIN { setlocale(LC_TIME, C); $subject = 0 } I still haven't convinced myself that this is an improvement over the simple LC_ALL=C LANG=C perl ... approach. Personally I prefer 2nd edition that is simpler and does the right thing (not that LC_ALL=C is necessary and sufficient, you neither need to add things like LANG=C nor can relax it to LC_TIME=C). -- ldv pgp3AH6oqBPnI.pgp Description: PGP signature
Re: [PATCH] am: invoke perl's strftime in C locale
On Tue, Jan 15, 2013 at 08:50:59AM -0800, Jeff King wrote: On Tue, Jan 15, 2013 at 05:42:12PM +0100, Antoine Pelisse wrote: This puts all of perl into the C locale, which would mean error messages from perl would be in English rather than the user's language. It probably isn't a big deal, because that snippet of perl is short and not likely to produce problems, but I wonder how hard it would be to set the locale just for the strftime call. Maybe just setting LC_TIME to C would do ... Yeah, that is a nice simple solution. Dmitry, does just setting LC_TIME fix the problem for you? Just setting LC_TIME environment variable instead of LC_ALL would end up with unreliable solution because LC_ALL has the highest priority. If keeping error messages from perl has the utmost importance, it could be achieved by - perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 } + perl -M'POSIX qw(strftime :locale_h)' -ne ' + BEGIN { setlocale(LC_TIME, C); $subject = 0 } but the little perl helper script we are talking about hardly worths so much efforts. -- ldv pgp6E64QU8Sck.pgp Description: PGP signature
[PATCH v3] am: invoke perl's strftime in C locale
This fixes hg patch format support for locales other than C and en_*. Before the change, git-am was making Date: line from hg changeset metadata according to the current locale, and this line was rejected later with invalid date format diagnostics because localized date strings are not supported. Reported-by: Gleb Fotengauer-Malinovskiy gle...@altlinux.org Signed-off-by: Dmitry V. Levin l...@altlinux.org --- v3: alternative implementation using setlocale(LC_TIME, C) git-am.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/git-am.sh b/git-am.sh index c682d34..8677d8c 100755 --- a/git-am.sh +++ b/git-am.sh @@ -334,7 +334,8 @@ split_patches () { # Since we cannot guarantee that the commit message is in # git-friendly format, we put no Subject: line and just consume # all of the message as the body - perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 } + perl -M'POSIX qw(strftime :locale_h)' -ne ' + BEGIN { setlocale(LC_TIME, C); $subject = 0 } if ($subject) { print ; } elsif (/^\# User /) { s/\# User/From:/ ; print ; } elsif (/^\# Date /) { -- ldv -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2] am: invoke perl's strftime in C locale
This fixes hg patch format support for locales other than C and en_*. Before the change, git-am was making Date: line from hg changeset metadata according to the current locale, and this line was rejected later with invalid date format diagnostics because localized date strings are not supported. Reported-by: Gleb Fotengauer-Malinovskiy gle...@altlinux.org Signed-off-by: Dmitry V. Levin l...@altlinux.org --- v2: replaced unfriendly URL with a short description git-am.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-am.sh b/git-am.sh index c682d34..64b88e4 100755 --- a/git-am.sh +++ b/git-am.sh @@ -334,7 +334,7 @@ split_patches () { # Since we cannot guarantee that the commit message is in # git-friendly format, we put no Subject: line and just consume # all of the message as the body - perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 } + LC_ALL=C perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 } if ($subject) { print ; } elsif (/^\# User /) { s/\# User/From:/ ; print ; } elsif (/^\# Date /) { -- ldv -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html