diff --git a/src/applications/diffusion/query/filecontent/base/DiffusionFileContentQuery.php b/src/applications/diffusion/query/filecontent/base/DiffusionFileContentQuery.php index 67fcd823a9..dd0b639e94 100644 --- a/src/applications/diffusion/query/filecontent/base/DiffusionFileContentQuery.php +++ b/src/applications/diffusion/query/filecontent/base/DiffusionFileContentQuery.php @@ -97,16 +97,37 @@ abstract class DiffusionFileContentQuery { } $repository = $this->getRequest()->getRepository(); + $commits = id(new PhabricatorRepositoryCommit())->loadAllWhere( 'repositoryID = %d AND commitIdentifier IN (%Ls)', $repository->getID(), array_unique($rev_list)); foreach ($commits as $commit) { - $commitIdentifier = $commit->getCommitIdentifier(); - $epoch = $commit->getEpoch(); - $blame_dict[$commitIdentifier]['epoch'] = $epoch; + $blame_dict[$commit->getCommitIdentifier()]['epoch'] = + $commit->getEpoch(); } - } + + $commits_data = id(new PhabricatorRepositoryCommitData())->loadAllWhere( + 'commitID IN (%Ls)', + mpull($commits, 'getID')); + + $phids = array(); + foreach ($commits_data as $data) { + $phids[] = $data->getCommitDetail('authorPHID'); + } + + $handles = id(new PhabricatorObjectHandleData(array_unique($phids))) + ->loadHandles(); + + foreach ($commits_data as $data) { + if ($data->getCommitDetail('authorPHID')) { + $commit_identifier = + $commits[$data->getCommitID()]->getCommitIdentifier(); + $blame_dict[$commit_identifier]['author'] = + $handles[$data->getCommitDetail('authorPHID')]->renderLink(); + } + } + } return array($text_list, $rev_list, $blame_dict); } diff --git a/src/applications/diffusion/query/filecontent/base/__init__.php b/src/applications/diffusion/query/filecontent/base/__init__.php index 7ad4326f05..19511645dc 100644 --- a/src/applications/diffusion/query/filecontent/base/__init__.php +++ b/src/applications/diffusion/query/filecontent/base/__init__.php @@ -6,8 +6,10 @@ +phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'applications/repository/constants/repositorytype'); phutil_require_module('phabricator', 'applications/repository/storage/commit'); +phutil_require_module('phabricator', 'applications/repository/storage/commitdata'); phutil_require_module('phutil', 'symbols'); phutil_require_module('phutil', 'utils');