Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
git-svn: restore original LC_ALL setting (or unset) for commit
author
Eric Wong
<normalperson@yhbt.net>
Fri, 2 Jun 2006 22:16:41 +0000
(15:16 -0700)
committer
Eric Wong
<normalperson@yhbt.net>
Fri, 16 Jun 2006 10:04:19 +0000
(
03:04
-0700)
svn forces UTF-8 for commit messages, and with LC_ALL set to 'C'
it is unable to determine encoding of the git commit message.
Now we'll just assume the user has set LC_* correctly for
the commit message they're using.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
contrib/git-svn/git-svn.perl
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
4a393f2
)
diff --git
a/contrib/git-svn/git-svn.perl
b/contrib/git-svn/git-svn.perl
index 8d2e7f74ea15d27d8380a756f41b0f22b7d88013..8bc3d69fdb020eb3d4e036d8a17d3799cc645996 100755
(executable)
--- a/
contrib/git-svn/git-svn.perl
+++ b/
contrib/git-svn/git-svn.perl
@@
-14,6
+14,7
@@
$GIT_DIR = abs_path($ENV{GIT_DIR} || '.git');
$ENV{GIT_DIR} = $GIT_DIR;
$GIT_DIR = abs_path($ENV{GIT_DIR} || '.git');
$ENV{GIT_DIR} = $GIT_DIR;
+my $LC_ALL = $ENV{LC_ALL};
# make sure the svn binary gives consistent output between locales and TZs:
$ENV{TZ} = 'UTC';
$ENV{LC_ALL} = 'C';
# make sure the svn binary gives consistent output between locales and TZs:
$ENV{TZ} = 'UTC';
$ENV{LC_ALL} = 'C';
@@
-704,23
+705,34
@@
sub svn_commit_tree {
my ($oneline) = ($log_msg{msg} =~ /([^\n\r]+)/);
print "Committing $commit: $oneline\n";
my ($oneline) = ($log_msg{msg} =~ /([^\n\r]+)/);
print "Committing $commit: $oneline\n";
+ if (defined $LC_ALL) {
+ $ENV{LC_ALL} = $LC_ALL;
+ } else {
+ delete $ENV{LC_ALL};
+ }
my @ci_output = safe_qx(qw(svn commit -F),$commit_msg);
my @ci_output = safe_qx(qw(svn commit -F),$commit_msg);
-
my ($committed) = grep(/^Committed revision \d+\./,@ci_output)
;
+
$ENV{LC_ALL} = 'C'
;
unlink $commit_msg;
unlink $commit_msg;
- defined $committed or croak
+ my ($committed) = ($ci_output[$#ci_output] =~ /(\d+)/);
+ if (!defined $committed) {
+ my $out = join("\n",@ci_output);
+ print STDERR "W: Trouble parsing \`svn commit' output:\n\n",
+ $out, "\n\nAssuming English locale...";
+ ($committed) = ($out =~ /^Committed revision \d+\./sm);
+ defined $committed or die " FAILED!\n",
"Commit output failed to parse committed revision!\n",
"Commit output failed to parse committed revision!\n",
-
join("\n",@ci_output),"
\n";
- my ($rev_committed) = ($committed =~ /^Committed revision (\d+)\./);
+
print STDERR " OK
\n";
+ }
my @svn_up = qw(svn up);
push @svn_up, '--ignore-externals' unless $_no_ignore_ext;
my @svn_up = qw(svn up);
push @svn_up, '--ignore-externals' unless $_no_ignore_ext;
- if ($
rev_
committed == ($svn_rev + 1)) {
- push @svn_up, "-r$
rev_
committed";
+ if ($committed == ($svn_rev + 1)) {
+ push @svn_up, "-r$committed";
sys(@svn_up);
my $info = svn_info('.');
my $date = $info->{'Last Changed Date'} or die "Missing date\n";
sys(@svn_up);
my $info = svn_info('.');
my $date = $info->{'Last Changed Date'} or die "Missing date\n";
- if ($info->{'Last Changed Rev'} != $
rev_
committed) {
- croak "$info->{'Last Changed Rev'} != $
rev_
committed\n"
+ if ($info->{'Last Changed Rev'} != $committed) {
+ croak "$info->{'Last Changed Rev'} != $committed\n"
}
my ($Y,$m,$d,$H,$M,$S,$tz) = ($date =~
/(\d{4})\-(\d\d)\-(\d\d)\s
}
my ($Y,$m,$d,$H,$M,$S,$tz) = ($date =~
/(\d{4})\-(\d\d)\-(\d\d)\s
@@
-728,16
+740,16
@@
sub svn_commit_tree {
or croak "Failed to parse date: $date\n";
$log_msg{date} = "$tz $Y-$m-$d $H:$M:$S";
$log_msg{author} = $info->{'Last Changed Author'};
or croak "Failed to parse date: $date\n";
$log_msg{date} = "$tz $Y-$m-$d $H:$M:$S";
$log_msg{author} = $info->{'Last Changed Author'};
- $log_msg{revision} = $
rev_
committed;
+ $log_msg{revision} = $committed;
$log_msg{msg} .= "\n";
my $parent = file_to_s("$REV_DIR/$svn_rev");
git_commit(\%log_msg, $parent, $commit);
$log_msg{msg} .= "\n";
my $parent = file_to_s("$REV_DIR/$svn_rev");
git_commit(\%log_msg, $parent, $commit);
- return $
rev_
committed;
+ return $committed;
}
# resync immediately
push @svn_up, "-r$svn_rev";
sys(@svn_up);
}
# resync immediately
push @svn_up, "-r$svn_rev";
sys(@svn_up);
- return fetch("$
rev_
committed=$commit")->{revision};
+ return fetch("$committed=$commit")->{revision};
}
# read the entire log into a temporary file (which is removed ASAP)
}
# read the entire log into a temporary file (which is removed ASAP)