diff --git a/src/applications/repository/storage/PhabricatorRepository.php b/src/applications/repository/storage/PhabricatorRepository.php --- a/src/applications/repository/storage/PhabricatorRepository.php +++ b/src/applications/repository/storage/PhabricatorRepository.php @@ -2834,10 +2834,24 @@ pht( 'The Almanac Service that hosts this repository, if the '. 'repository is clustered.')), + id(new PhabricatorConduitSearchFieldSpecification()) + ->setKey('refRules') + ->setType('map>') + ->setDescription( + pht( + 'The "Fetch" and "Permanent Ref" rules for this repository.')), ); } public function getFieldValuesForConduit() { + $fetch_rules = $this->getFetchRules(); + $track_rules = $this->getTrackOnlyRules(); + $permanent_rules = $this->getAutocloseOnlyRules(); + + $fetch_rules = $this->getStringListForConduit($fetch_rules); + $track_rules = $this->getStringListForConduit($track_rules); + $permanent_rules = $this->getStringListForConduit($permanent_rules); + return array( 'name' => $this->getName(), 'vcs' => $this->getVersionControlSystem(), @@ -2846,9 +2860,29 @@ 'status' => $this->getStatus(), 'isImporting' => (bool)$this->isImporting(), 'almanacServicePHID' => $this->getAlmanacServicePHID(), + 'refRules' => array( + 'fetchRules' => $fetch_rules, + 'trackRules' => $track_rules, + 'permanentRefRules' => $permanent_rules, + ), ); } + private function getStringListForConduit($list) { + if (!is_array($list)) { + $list = array(); + } + + foreach ($list as $key => $value) { + $value = (string)$value; + if (!strlen($value)) { + unset($list[$key]); + } + } + + return array_values($list); + } + public function getConduitSearchAttachments() { return array( id(new DiffusionRepositoryURIsSearchEngineAttachment())