private function buildDependencyGraph(ArcanistBundle $bundle) { $graph = null; if ($this->getRepositoryAPI() instanceof ArcanistSubversionAPI) { return $graph; } $revision_id = $bundle->getRevisionID(); if ($revision_id) { $revisions = $this->getConduit()->callMethodSynchronous('differential.query', array('ids' => array($revision_id))); if ($revisions) { $revision = head($revisions); $rev_auxiliary = idx($revision, 'auxiliary', array()); $phids = idx($rev_auxiliary, 'phabricator:depends-on', array()); if ($phids) { $revision_phid = $revision['phid']; $graph = id(new ArcanistDifferentialDependencyGraph())->setConduit($this->getConduit())->setRepositoryAPI($this->getRepositoryAPI())->setStartPHID($revision_phid)->addNodes(array($revision_phid => $phids))->loadGraph(); } } } return $graph; }
private function getCommitMessage(ArcanistBundle $bundle) { $revision_id = $bundle->getRevisionID(); $commit_message = null; $prompt_message = null; // if we have a revision id the commit message is in differential // TODO: See T848 for the authenticated stuff. if ($revision_id && $this->isConduitAuthenticated()) { $conduit = $this->getConduit(); $commit_message = $conduit->callMethodSynchronous('differential.getcommitmessage', array('revision_id' => $revision_id)); $prompt_message = " Note arcanist failed to load the commit message " . "from differential for revision D{$revision_id}."; } // no revision id or failed to fetch commit message so get it from the // user on the command line if (!$commit_message) { $template = "\n\n" . "# Enter a commit message for this patch. If you just want to apply " . "the patch to the working copy without committing, re-run arc patch " . "with the --nocommit flag." . $prompt_message . "\n"; $commit_message = $this->newInteractiveEditor($template)->setName('arcanist-patch-commit-message')->editInteractively(); $commit_message = ArcanistCommentRemover::removeComments($commit_message); if (!strlen(trim($commit_message))) { throw new ArcanistUserAbortException(); } } return $commit_message; }