mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-26 11:10:16 +01:00
Summary: Fixes T2451. Several motivations here, from strongest to weakest: - Currently, getting blame and file content are closely entwined. This makes fixing T9319 more difficult, and I want to fix it. I want to separate blame from content so there's more flexibility in how we approach this issue. - This makes pursuing T2450 easier, if it turns out to be a meaningful win. - If we can get a win on blame performance, we can do `arc blame` eventually if we want. Test Plan: - Blamed in SVN, Git and Mercurial. Reviewers: chad Reviewed By: chad Maniphest Tasks: T2451 Differential Revision: https://secure.phabricator.com/D14957
36 lines
821 B
PHP
36 lines
821 B
PHP
<?php
|
|
|
|
final class DiffusionMercurialBlameQuery extends DiffusionBlameQuery {
|
|
|
|
protected function newBlameFuture(DiffusionRequest $request, $path) {
|
|
$repository = $request->getRepository();
|
|
$commit = $request->getCommit();
|
|
|
|
// NOTE: We're using "--debug" to make "--changeset" give us the full
|
|
// commit hashes.
|
|
|
|
return $repository->getLocalCommandFuture(
|
|
'annotate --debug --changeset --rev %s -- %s',
|
|
$commit,
|
|
$path);
|
|
}
|
|
|
|
protected function resolveBlameFuture(ExecFuture $future) {
|
|
list($err, $stdout) = $future->resolve();
|
|
|
|
if ($err) {
|
|
return null;
|
|
}
|
|
|
|
$result = array();
|
|
|
|
$lines = phutil_split_lines($stdout);
|
|
foreach ($lines as $line) {
|
|
list($commit) = explode(':', $line, 2);
|
|
$result[] = $commit;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
}
|