Correct a parameter order swap in "diffusion.historyquery" for Mercurial
[phabricator.git] / src / applications / diffusion / query / rawdiff / DiffusionGitRawDiffQuery.php
blob9c894437ef09ad62bbbbb69e1d80f4dc8ba0af6d
1 <?php
3 final class DiffusionGitRawDiffQuery extends DiffusionRawDiffQuery {
5 protected function newQueryFuture() {
6 $drequest = $this->getRequest();
7 $repository = $drequest->getRepository();
9 $commit = $this->getAnchorCommit();
11 $options = array(
12 '-M',
13 '-C',
14 '--no-ext-diff',
15 '--no-color',
16 '--src-prefix=a/',
17 '--dst-prefix=b/',
18 '-U'.(int)$this->getLinesOfContext(),
21 $against = $this->getAgainstCommit();
22 if ($against === null) {
23 // Check if this is the root commit by seeing if it has parents, since
24 // `git diff X^ X` does not work if "X" is the initial commit.
25 list($parents) = $repository->execxLocalCommand(
26 'log -n 1 %s %s --',
27 '--format=%P',
28 gitsprintf('%s', $commit));
30 if (strlen(trim($parents))) {
31 $against = $commit.'^';
32 } else {
33 $against = ArcanistGitAPI::GIT_MAGIC_ROOT_COMMIT;
37 $path = $drequest->getPath();
38 if (!strlen($path)) {
39 $path = '.';
42 return $repository->getLocalCommandFuture(
43 'diff %Ls %s %s -- %s',
44 $options,
45 gitsprintf('%s', $against),
46 gitsprintf('%s', $commit),
47 $path);