* maint:
  Update draft release notes for 1.5.3.6
  Fix per-directory exclude handing for "git add"
  core.excludesfile clean-up
  Fix t9101 test failure caused by Subversion "auto-props"
  git-send-email: add charset header if we add encoded 'From'
This commit is contained in:
Junio C Hamano 2007-11-16 21:30:06 -08:00
Родитель 41a7aa588f 78e694787c
Коммит f1a82fe9a3
3 изменённых файлов: 64 добавлений и 5 удалений

Просмотреть файл

@ -9,13 +9,44 @@ Fixes since v1.5.3.5
* git-svn dcommit used to clobber when sending a series of * git-svn dcommit used to clobber when sending a series of
patches; patches;
* git-svn dcommit failed after attempting to rebase when
started with a dirty index; now it stops upfront.
* git-grep sometimes refused to work when your index was * git-grep sometimes refused to work when your index was
unmerged; unmerged;
* git-hash-object did not honor configuration variables, such as
core.compression.
* git-index-pack choked on a huge pack on 32-bit machines, even when
large file offsets are supported.
* atom feeds from git-web said "10" for the month of November.
* a memory leak in commit walker was plugged.
* When git-send-email inserted the original author's From:
address in body, it did not mark the message with
Content-type: as needed.
* git-revert and git-cherry-pick incorrectly refused to start
when the work tree was dirty.
* git-clean did not honor core.excludesfile configuration.
* git-add mishandled ".gitignore" files when applying them to
subdirectories.
* While importing a too branchy history, git-fastimport did not
honor delta depth limit properly.
* Support for zlib implementations that lack ZLIB_VERNUM and definition
of deflateBound() has been added.
* Quite a lot of documentation clarifications. * Quite a lot of documentation clarifications.
-- --
exec >/var/tmp/1 exec >/var/tmp/1
O=v1.5.3.5-32-gcb6c162 O=v1.5.3.5-57-gb574c8d
echo O=`git describe refs/heads/maint` echo O=`git describe refs/heads/maint`
git shortlog --no-merges $O..refs/heads/maint git shortlog --no-merges $O..refs/heads/maint

Просмотреть файл

@ -514,11 +514,13 @@ $time = time - scalar $#files;
sub unquote_rfc2047 { sub unquote_rfc2047 {
local ($_) = @_; local ($_) = @_;
if (s/=\?utf-8\?q\?(.*)\?=/$1/g) { my $encoding;
if (s/=\?([^?]+)\?q\?(.*)\?=/$2/g) {
$encoding = $1;
s/_/ /g; s/_/ /g;
s/=([0-9A-F]{2})/chr(hex($1))/eg; s/=([0-9A-F]{2})/chr(hex($1))/eg;
} }
return "$_"; return wantarray ? ($_, $encoding) : $_;
} }
# use the simplest quoting being able to handle the recipient # use the simplest quoting being able to handle the recipient
@ -667,6 +669,9 @@ foreach my $t (@files) {
open(F,"<",$t) or die "can't open file $t"; open(F,"<",$t) or die "can't open file $t";
my $author = undef; my $author = undef;
my $author_encoding;
my $has_content_type;
my $body_encoding;
@cc = @initial_cc; @cc = @initial_cc;
@xh = (); @xh = ();
my $input_format = undef; my $input_format = undef;
@ -692,12 +697,20 @@ foreach my $t (@files) {
next if ($suppress_from); next if ($suppress_from);
} }
elsif ($1 eq 'From') { elsif ($1 eq 'From') {
$author = unquote_rfc2047($2); ($author, $author_encoding)
= unquote_rfc2047($2);
} }
printf("(mbox) Adding cc: %s from line '%s'\n", printf("(mbox) Adding cc: %s from line '%s'\n",
$2, $_) unless $quiet; $2, $_) unless $quiet;
push @cc, $2; push @cc, $2;
} }
elsif (/^Content-type:/i) {
$has_content_type = 1;
if (/charset="?[^ "]+/) {
$body_encoding = $1;
}
push @xh, $_;
}
elsif (!/^Date:\s/ && /^[-A-Za-z]+:\s+\S/) { elsif (!/^Date:\s/ && /^[-A-Za-z]+:\s+\S/) {
push @xh, $_; push @xh, $_;
} }
@ -756,6 +769,21 @@ foreach my $t (@files) {
if (defined $author) { if (defined $author) {
$message = "From: $author\n\n$message"; $message = "From: $author\n\n$message";
if (defined $author_encoding) {
if ($has_content_type) {
if ($body_encoding eq $author_encoding) {
# ok, we already have the right encoding
}
else {
# uh oh, we should re-encode
}
}
else {
push @xh,
'MIME-Version: 1.0',
"Content-Type: text/plain; charset=$author_encoding";
}
}
} }
send_message(); send_message();

Просмотреть файл

@ -48,7 +48,7 @@ EOF
printf "\r\n" > empty_crlf printf "\r\n" > empty_crlf
a_empty_crlf=`git-hash-object -w empty_crlf` a_empty_crlf=`git-hash-object -w empty_crlf`
svn import -m 'import for git-svn' . "$svnrepo" >/dev/null svn import --no-auto-props -m 'import for git-svn' . "$svnrepo" >/dev/null
cd .. cd ..
rm -rf import rm -rf import