Basic DiffusionGitDiffQuery.
This commit is contained in:
@@ -163,6 +163,7 @@ phutil_register_library_map(array(
|
|||||||
'DiffusionFileContentQuery' => 'applications/diffusion/query/filecontent/base',
|
'DiffusionFileContentQuery' => 'applications/diffusion/query/filecontent/base',
|
||||||
'DiffusionGitBranchQuery' => 'applications/diffusion/query/branch/git',
|
'DiffusionGitBranchQuery' => 'applications/diffusion/query/branch/git',
|
||||||
'DiffusionGitBrowseQuery' => 'applications/diffusion/query/browse/git',
|
'DiffusionGitBrowseQuery' => 'applications/diffusion/query/browse/git',
|
||||||
|
'DiffusionGitDiffQuery' => 'applications/diffusion/query/diff/git',
|
||||||
'DiffusionGitFileContentQuery' => 'applications/diffusion/query/filecontent/git',
|
'DiffusionGitFileContentQuery' => 'applications/diffusion/query/filecontent/git',
|
||||||
'DiffusionGitHistoryQuery' => 'applications/diffusion/query/history/git',
|
'DiffusionGitHistoryQuery' => 'applications/diffusion/query/history/git',
|
||||||
'DiffusionGitPathIDQuery' => 'applications/diffusion/query/pathid/base',
|
'DiffusionGitPathIDQuery' => 'applications/diffusion/query/pathid/base',
|
||||||
@@ -531,6 +532,7 @@ phutil_register_library_map(array(
|
|||||||
'DiffusionDiffController' => 'DiffusionController',
|
'DiffusionDiffController' => 'DiffusionController',
|
||||||
'DiffusionGitBranchQuery' => 'DiffusionBranchQuery',
|
'DiffusionGitBranchQuery' => 'DiffusionBranchQuery',
|
||||||
'DiffusionGitBrowseQuery' => 'DiffusionBrowseQuery',
|
'DiffusionGitBrowseQuery' => 'DiffusionBrowseQuery',
|
||||||
|
'DiffusionGitDiffQuery' => 'DiffusionDiffQuery',
|
||||||
'DiffusionGitFileContentQuery' => 'DiffusionFileContentQuery',
|
'DiffusionGitFileContentQuery' => 'DiffusionFileContentQuery',
|
||||||
'DiffusionGitHistoryQuery' => 'DiffusionHistoryQuery',
|
'DiffusionGitHistoryQuery' => 'DiffusionHistoryQuery',
|
||||||
'DiffusionGitRequest' => 'DiffusionRequest',
|
'DiffusionGitRequest' => 'DiffusionRequest',
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2011 Facebook, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
final class DiffusionGitDiffQuery extends DiffusionDiffQuery {
|
||||||
|
|
||||||
|
protected function executeQuery() {
|
||||||
|
$drequest = $this->getRequest();
|
||||||
|
$repository = $drequest->getRepository();
|
||||||
|
|
||||||
|
$options = array(
|
||||||
|
'-M',
|
||||||
|
'-C',
|
||||||
|
'--no-ext-diff',
|
||||||
|
'--no-color',
|
||||||
|
'--src-prefix=a/',
|
||||||
|
'--dst-prefix=b/',
|
||||||
|
'-U65535',
|
||||||
|
);
|
||||||
|
$options = implode(' ', $options);
|
||||||
|
|
||||||
|
list($raw_diff) = execx(
|
||||||
|
"(cd %s && git diff {$options} %s^ %s -- %s)",
|
||||||
|
$repository->getDetail('local-path'),
|
||||||
|
$drequest->getCommit(),
|
||||||
|
$drequest->getCommit(),
|
||||||
|
$drequest->getPath());
|
||||||
|
|
||||||
|
$parser = new ArcanistDiffParser();
|
||||||
|
$parser->setDetectBinaryFiles(true);
|
||||||
|
$changes = $parser->parseDiff($raw_diff);
|
||||||
|
|
||||||
|
$diff = DifferentialDiff::newFromRawChanges($changes);
|
||||||
|
$changesets = $diff->getChangesets();
|
||||||
|
$changeset = reset($changesets);
|
||||||
|
|
||||||
|
$id =
|
||||||
|
$drequest->getBranch().'/'.
|
||||||
|
$drequest->getPath().';'.
|
||||||
|
$drequest->getCommit();
|
||||||
|
|
||||||
|
$changeset->setID($id);
|
||||||
|
|
||||||
|
return $changeset;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
17
src/applications/diffusion/query/diff/git/__init__.php
Normal file
17
src/applications/diffusion/query/diff/git/__init__.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is automatically generated. Lint this module to rebuild it.
|
||||||
|
* @generated
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_module('arcanist', 'parser/diff');
|
||||||
|
|
||||||
|
phutil_require_module('phabricator', 'applications/differential/storage/diff');
|
||||||
|
phutil_require_module('phabricator', 'applications/diffusion/query/diff/base');
|
||||||
|
|
||||||
|
phutil_require_module('phutil', 'future/exec');
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_source('DiffusionGitDiffQuery.php');
|
||||||
Reference in New Issue
Block a user