From 3d7ac867f53892b8210339bbb0c5fd91e0e36d78 Mon Sep 17 00:00:00 2001 From: Aviv Eyal Date: Tue, 15 Mar 2016 03:58:46 +0000 Subject: [PATCH] Make callsigns optional in arcanist Summary: Remove couple of references to callsigns: - `arc which` now prints repository name - `getShouldAmend()` can now use new format of commit name a quick git-grep looks like the remaining references are all about `repository.callsign` config. Ref T4245 Test Plan: - `arc which` on a repository with no callsign - trigger `requireCleanWorkingCopy()`, see both "Do you want to amend this change" and "Do you want to create a new commit" prompts. - fire this diff with new code. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin Maniphest Tasks: T4245 Differential Revision: https://secure.phabricator.com/D15472 --- src/workflow/ArcanistWhichWorkflow.php | 6 +++--- src/workflow/ArcanistWorkflow.php | 26 +++++++++++++++++--------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/workflow/ArcanistWhichWorkflow.php b/src/workflow/ArcanistWhichWorkflow.php index 17d43447..3518f744 100644 --- a/src/workflow/ArcanistWhichWorkflow.php +++ b/src/workflow/ArcanistWhichWorkflow.php @@ -259,7 +259,7 @@ EOTEXT $console = PhutilConsole::getConsole(); $console->writeOut("**%s**\n", pht('REPOSITORY')); - $callsign = $this->getRepositoryCallsign(); + $repo_name = $this->getRepositoryName(); $console->writeOut( "%s\n\n", @@ -272,11 +272,11 @@ EOTEXT $console->writeOut("%s\n\n", $reason); } - if ($callsign) { + if ($repo_name) { $console->writeOut( "%s\n", pht('This working copy is associated with the %s repository.', - phutil_console_format('**%s**', $callsign))); + phutil_console_format('**%s**', $repo_name))); } else { $console->writeOut( "%s\n", diff --git a/src/workflow/ArcanistWorkflow.php b/src/workflow/ArcanistWorkflow.php index f30fdc47..366f4742 100644 --- a/src/workflow/ArcanistWorkflow.php +++ b/src/workflow/ArcanistWorkflow.php @@ -1107,8 +1107,17 @@ abstract class ArcanistWorkflow extends Phobject { // Don't amend the current commit if it has already been published. $repository = $this->loadProjectRepository(); if ($repository) { - $callsign = $repository['callsign']; - $commit_name = 'r'.$callsign.$commit['commit']; + $repo_id = $repository['id']; + $commit_hash = $commit['commit']; + $callsign = idx($repository, 'callsign'); + if ($callsign) { + // The server might be too old to support the new style commit names, + // so prefer the old way + $commit_name = "r{$callsign}{$commit_hash}"; + } else { + $commit_name = "R{$repo_id}:{$commit_hash}"; + } + $result = $this->getConduit()->callMethodSynchronous( 'diffusion.querycommits', array('names' => array($commit_name))); @@ -1686,18 +1695,17 @@ abstract class ArcanistWorkflow extends Phobject { return idx($this->getRepositoryInformation(), 'phid'); } - /** - * Get the callsign of the Phabricator repository this working copy + * Get the name of the Phabricator repository this working copy * corresponds to. Returns `null` if no repository can be identified. * - * @return string|null Repository callsign, or null if no repository can be + * @return string|null Repository name, or null if no repository can be * identified. * * @task phabrep */ - final protected function getRepositoryCallsign() { - return idx($this->getRepositoryInformation(), 'callsign'); + final protected function getRepositoryName() { + return idx($this->getRepositoryInformation(), 'name'); } @@ -2013,12 +2021,12 @@ abstract class ArcanistWorkflow extends Phobject { // If we know which repository we're in, try to tell Phabricator that we // pushed commits to it so it can update. This hint can help pull updates // more quickly, especially in rarely-used repositories. - if ($this->getRepositoryCallsign()) { + if ($this->getRepositoryPHID()) { try { $this->getConduit()->callMethodSynchronous( 'diffusion.looksoon', array( - 'callsigns' => array($this->getRepositoryCallsign()), + 'repositories' => array($this->getRepositoryPHID()), )); } catch (ConduitClientException $ex) { // If we hit an exception, just ignore it. Likely, we are running