Convert author/message encoding if not UTF-8

Test Plan:
used the reparse.php script for reparsing commit messages and saw the
correct author name (and mapped correctly as a phabricator user) in diffusion.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, epriestley

Differential Revision: 1059
This commit is contained in:
David Reuss
2011-10-28 08:06:03 -07:00
committed by epriestley
parent b81231b3dc
commit 0d5b0f21ad

View File

@@ -26,10 +26,15 @@ class PhabricatorRepositoryGitCommitMessageParserWorker
// NOTE: %B was introduced somewhat recently in git's history, so pull // NOTE: %B was introduced somewhat recently in git's history, so pull
// commit message information with %s and %b instead. // commit message information with %s and %b instead.
list($info) = $repository->execxLocalCommand( list($info) = $repository->execxLocalCommand(
'log -n 1 --pretty=format:%%an%%x00%%s%%n%%n%%b %s', 'log -n 1 --pretty=format:%%e%%x00%%an%%x00%%s%%n%%n%%b %s',
$commit->getCommitIdentifier()); $commit->getCommitIdentifier());
list($author, $message) = explode("\0", $info); list($encoding, $author, $message) = explode("\0", $info);
if ($encoding != "UTF-8") {
$author = mb_convert_encoding($author, 'UTF-8', $encoding);
$message = mb_convert_encoding($message, 'UTF-8', $encoding);
}
// Make sure these are valid UTF-8. // Make sure these are valid UTF-8.
$author = phutil_utf8ize($author); $author = phutil_utf8ize($author);