protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorRepositoryTransaction::TYPE_VCS:
             $object->setVersionControlSystem($xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_ACTIVATE:
             $object->setDetail('tracking-enabled', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_NAME:
             $object->setName($xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_DESCRIPTION:
             $object->setDetail('description', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_DEFAULT_BRANCH:
             $object->setDetail('default-branch', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_TRACK_ONLY:
             $object->setDetail('branch-filter', array_fill_keys($xaction->getNewValue(), true));
             break;
         case PhabricatorRepositoryTransaction::TYPE_AUTOCLOSE_ONLY:
             $object->setDetail('close-commits-filter', array_fill_keys($xaction->getNewValue(), true));
             break;
         case PhabricatorRepositoryTransaction::TYPE_UUID:
             $object->setUUID($xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_SVN_SUBPATH:
             $object->setDetail('svn-subpath', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_NOTIFY:
             $object->setDetail('herald-disabled', (int) (!$xaction->getNewValue()));
             break;
         case PhabricatorRepositoryTransaction::TYPE_AUTOCLOSE:
             $object->setDetail('disable-autoclose', (int) (!$xaction->getNewValue()));
             break;
         case PhabricatorRepositoryTransaction::TYPE_REMOTE_URI:
             $object->setDetail('remote-uri', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_LOCAL_PATH:
             $object->setDetail('local-path', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_HOSTING:
             return $object->setHosted($xaction->getNewValue());
         case PhabricatorRepositoryTransaction::TYPE_PROTOCOL_HTTP:
             return $object->setServeOverHTTP($xaction->getNewValue());
         case PhabricatorRepositoryTransaction::TYPE_PROTOCOL_SSH:
             return $object->setServeOverSSH($xaction->getNewValue());
         case PhabricatorRepositoryTransaction::TYPE_PUSH_POLICY:
             return $object->setPushPolicy($xaction->getNewValue());
         case PhabricatorRepositoryTransaction::TYPE_CREDENTIAL:
             return $object->setCredentialPHID($xaction->getNewValue());
         case PhabricatorRepositoryTransaction::TYPE_DANGEROUS:
             $object->setDetail('allow-dangerous-changes', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_SLUG:
             $object->setRepositorySlug($xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_SERVICE:
             $object->setAlmanacServicePHID($xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_LANGUAGE:
             $object->setDetail('symbol-languages', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_SOURCES:
             $object->setDetail('symbol-sources', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_STAGING_URI:
             $object->setDetail('staging-uri', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_AUTOMATION_BLUEPRINTS:
             $object->setDetail('automation.blueprintPHIDs', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_CALLSIGN:
             $object->setCallsign($xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_ENCODING:
             // Make sure the encoding is valid by converting to UTF-8. This tests
             // that the user has mbstring installed, and also that they didn't type
             // a garbage encoding name. Note that we're converting from UTF-8 to
             // the target encoding, because mbstring is fine with converting from
             // a nonsense encoding.
             $encoding = $xaction->getNewValue();
             if (strlen($encoding)) {
                 try {
                     phutil_utf8_convert('.', $encoding, 'UTF-8');
                 } catch (Exception $ex) {
                     throw new PhutilProxyException(pht("Error setting repository encoding '%s': %s'", $encoding, $ex->getMessage()), $ex);
                 }
             }
             $object->setDetail('encoding', $encoding);
             break;
     }
 }
 protected function applyCustomInternalTransaction(PhabricatorLiskDAO $object, PhabricatorApplicationTransaction $xaction)
 {
     switch ($xaction->getTransactionType()) {
         case PhabricatorRepositoryTransaction::TYPE_VCS:
             $object->setVersionControlSystem($xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_ACTIVATE:
             $active = $xaction->getNewValue();
             // The first time a repository is activated, clear the "new repository"
             // flag so we stop showing setup hints.
             if ($active) {
                 $object->setDetail('newly-initialized', false);
             }
             $object->setDetail('tracking-enabled', $active);
             break;
         case PhabricatorRepositoryTransaction::TYPE_NAME:
             $object->setName($xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_DESCRIPTION:
             $object->setDetail('description', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_DEFAULT_BRANCH:
             $object->setDetail('default-branch', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_TRACK_ONLY:
             $object->setDetail('branch-filter', array_fill_keys($xaction->getNewValue(), true));
             break;
         case PhabricatorRepositoryTransaction::TYPE_AUTOCLOSE_ONLY:
             $object->setDetail('close-commits-filter', array_fill_keys($xaction->getNewValue(), true));
             break;
         case PhabricatorRepositoryTransaction::TYPE_UUID:
             $object->setUUID($xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_SVN_SUBPATH:
             $object->setDetail('svn-subpath', $xaction->getNewValue());
             break;
         case PhabricatorRepositoryTransaction::TYPE_NOTIFY:
             $object->setDetail('herald-disabled', (int) (!$xaction->getNewValue()));
             break;
         case PhabricatorRepositoryTransaction::TYPE_AUTOCLOSE:
             $object->setDetail('disable-autoclose', (int) (!$xaction->getNewValue()));
             break;
         case PhabricatorRepositoryTransaction::TYPE_PUSH_POLICY:
             return $object->setPushPolicy($xaction->getNewValue());
         case PhabricatorRepositoryTransaction::TYPE_DANGEROUS:
             $object->setDetail('allow-dangerous-changes', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_SLUG:
             $object->setRepositorySlug($xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_SERVICE:
             $object->setAlmanacServicePHID($xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_LANGUAGE:
             $object->setDetail('symbol-languages', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_SYMBOLS_SOURCES:
             $object->setDetail('symbol-sources', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_STAGING_URI:
             $object->setDetail('staging-uri', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_AUTOMATION_BLUEPRINTS:
             $object->setDetail('automation.blueprintPHIDs', $xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_CALLSIGN:
             $object->setCallsign($xaction->getNewValue());
             return;
         case PhabricatorRepositoryTransaction::TYPE_ENCODING:
             $object->setDetail('encoding', $xaction->getNewValue());
             break;
     }
 }