fast-export: avoid stripping encoding header if we cannot reencode
When fast-export encounters a commit with an 'encoding' header, it tries to reencode in UTF-8 and then drops the encoding header. However, if it fails to reencode in UTF-8 because e.g. one of the characters in the commit message was invalid in the old encoding, then we need to retain the original encoding or otherwise we lose information needed to understand all the other (valid) characters in the original commit message. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
3edfcc65fd
commit
ccbfc96dc4
@ -642,9 +642,12 @@ static void handle_commit(struct commit *commit, struct rev_info *rev,
|
||||
printf("commit %s\nmark :%"PRIu32"\n", refname, last_idnum);
|
||||
if (show_original_ids)
|
||||
printf("original-oid %s\n", oid_to_hex(&commit->object.oid));
|
||||
printf("%.*s\n%.*s\ndata %u\n%s",
|
||||
printf("%.*s\n%.*s\n",
|
||||
(int)(author_end - author), author,
|
||||
(int)(committer_end - committer), committer,
|
||||
(int)(committer_end - committer), committer);
|
||||
if (!reencoded && encoding)
|
||||
printf("encoding %s\n", encoding);
|
||||
printf("data %u\n%s",
|
||||
(unsigned)(reencoded
|
||||
? strlen(reencoded) : message
|
||||
? strlen(message) : 0),
|
||||
|
Reference in New Issue
Block a user