summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorElijah Newren <newren@gmail.com>2019-05-14 04:31:00 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-05-14 07:48:56 (GMT)
commitccbfc96dc480a1395f2068c706f53fe0881c8356 (patch)
tree7c40bffdd5106c9199ffec5e30cdccc6c1b3ed73 /builtin
parent3edfcc65fdfc708c1c8f1d314885eecf9beb9b67 (diff)
downloadgit-ccbfc96dc480a1395f2068c706f53fe0881c8356.zip
git-ccbfc96dc480a1395f2068c706f53fe0881c8356.tar.gz
git-ccbfc96dc480a1395f2068c706f53fe0881c8356.tar.bz2
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>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/fast-export.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index 9e28348..7734a9f 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -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),