aboutsummaryrefslogtreecommitdiffstats
path: root/git-svn.perl
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-05-30 22:25:41 -0700
committerJunio C Hamano <gitster@pobox.com>2009-05-30 22:25:41 -0700
commit0ddbbb66614c7a503442ff863817ccbc68f417ab (patch)
treeda00a95aee5901fe64649e87d2aad5eca2d75db3 /git-svn.perl
parentDocumentation: teach stash/pop workflow instead of stash/apply (diff)
parentgit-svn: refuse to dcommit non-UTF-8 messages (diff)
downloadgit-0ddbbb66614c7a503442ff863817ccbc68f417ab.tar.gz
git-0ddbbb66614c7a503442ff863817ccbc68f417ab.zip
Merge git://git.bogomips.org/git-svn
* git://git.bogomips.org/git-svn: git-svn: refuse to dcommit non-UTF-8 messages
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-xgit-svn.perl17
1 files changed, 14 insertions, 3 deletions
diff --git a/git-svn.perl b/git-svn.perl
index a70c7d7b2c..33017974d0 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1178,16 +1178,27 @@ sub get_commit_entry {
}
rename $commit_editmsg, $commit_msg or croak $!;
{
+ require Encode;
# SVN requires messages to be UTF-8 when entering the repo
local $/;
open $log_fh, '<', $commit_msg or croak $!;
binmode $log_fh;
chomp($log_entry{log} = <$log_fh>);
- if (my $enc = Git::config('i18n.commitencoding')) {
- require Encode;
- Encode::from_to($log_entry{log}, $enc, 'UTF-8');
+ my $enc = Git::config('i18n.commitencoding') || 'UTF-8';
+ my $msg = $log_entry{log};
+
+ eval { $msg = Encode::decode($enc, $msg, 1) };
+ if ($@) {
+ die "Could not decode as $enc:\n", $msg,
+ "\nPerhaps you need to set i18n.commitencoding\n";
}
+
+ eval { $msg = Encode::encode('UTF-8', $msg, 1) };
+ die "Could not encode as UTF-8:\n$msg\n" if $@;
+
+ $log_entry{log} = $msg;
+
close $log_fh or croak $!;
}
unlink $commit_msg;