From 4a1e11c6ceb17b764c613778d8ce408f0aa28a48 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Thu, 9 May 2013 00:45:27 +0200 Subject: Stop unintended re-encoding of author names from UTF-8 to ASCII MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To see the bug in action, use an author map with umlauts, e.g. nickname = Hällo Wörld from UTF-8 and check "git log" after the conversion. What is happening? QByteArray "author" is first decoded as UTF-8 into a QString. That QString is passed to QByteArray::append(const QString &) which internally encodes the QString to ASCII byte data using QString::toAscii(). "git fast-import" expects UTF-8 input from us, so the original QByteArray with UTF-8 content is just what we need. --- src/repository.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/repository.cpp b/src/repository.cpp index 779dd28..3dd84af 100644 --- a/src/repository.cpp +++ b/src/repository.cpp @@ -736,7 +736,7 @@ void Repository::Transaction::commit() QByteArray s(""); s.append("commit " + branchRef + "\n"); s.append("mark :" + QByteArray::number(mark) + "\n"); - s.append("committer " + QString::fromUtf8(author) + " " + QString::number(datetime) + " +0000" + "\n"); + s.append("committer " + author + " " + QString::number(datetime).toUtf8() + " +0000" + "\n"); s.append("data " + QString::number(message.length()) + "\n"); s.append(message + "\n"); repository->fastImport.write(s); -- cgit v1.2.1