protected function getGitResult(ConduitAPIRequest $request) { $drequest = $this->getDiffusionRequest(); $repository = $drequest->getRepository(); $contains = $request->getValue('contains'); if (strlen($contains)) { // NOTE: We can't use DiffusionLowLevelGitRefQuery here because // `git for-each-ref` does not support `--contains`. if ($repository->isWorkingCopyBare()) { list($stdout) = $repository->execxLocalCommand('branch --verbose --no-abbrev --contains %s --', $contains); $ref_map = DiffusionGitBranch::parseLocalBranchOutput($stdout); } else { list($stdout) = $repository->execxLocalCommand('branch -r --verbose --no-abbrev --contains %s --', $contains); $ref_map = DiffusionGitBranch::parseRemoteBranchOutput($stdout, DiffusionGitBranch::DEFAULT_GIT_REMOTE); } $refs = array(); foreach ($ref_map as $ref => $commit) { $refs[] = id(new DiffusionRepositoryRef())->setShortName($ref)->setCommitIdentifier($commit); } } else { $refs = id(new DiffusionLowLevelGitRefQuery())->setRepository($repository)->withIsOriginBranch(true)->execute(); } return $this->processBranchRefs($request, $refs); }