Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
3.9 kB · 123 lines
PHP
at commit dcd7a316
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124<?php
final class DiffusionRepositoryEditSubversionController extends DiffusionRepositoryEditController {
public function processRequest() { $request = $this->getRequest(); $viewer = $request->getUser(); $drequest = $this->diffusionRequest; $repository = $drequest->getRepository();
$repository = id(new PhabricatorRepositoryQuery()) ->setViewer($viewer) ->requireCapabilities( array( PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT, )) ->withIDs(array($repository->getID())) ->executeOne();
if (!$repository) { return new Aphront404Response(); }
switch ($repository->getVersionControlSystem()) { case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT: case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL: throw new Exception( pht('Git and Mercurial do not support editing SVN properties!')); case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: break; default: throw new Exception( pht('Repository has unknown version control system!')); }
$edit_uri = $this->getRepositoryControllerURI($repository, 'edit/');
$v_subpath = $repository->getHumanReadableDetail('svn-subpath'); $v_uuid = $repository->getUUID();
if ($request->isFormPost()) { $v_subpath = $request->getStr('subpath'); $v_uuid = $request->getStr('uuid');
$xactions = array(); $template = id(new PhabricatorRepositoryTransaction());
$type_subpath = PhabricatorRepositoryTransaction::TYPE_SVN_SUBPATH; $type_uuid = PhabricatorRepositoryTransaction::TYPE_UUID;
$xactions[] = id(clone $template) ->setTransactionType($type_subpath) ->setNewValue($v_subpath);
$xactions[] = id(clone $template) ->setTransactionType($type_uuid) ->setNewValue($v_uuid);
id(new PhabricatorRepositoryEditor()) ->setContinueOnNoEffect(true) ->setContentSourceFromRequest($request) ->setActor($viewer) ->applyTransactions($repository, $xactions);
return id(new AphrontRedirectResponse())->setURI($edit_uri); }
$content = array();
$crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Edit Subversion Info'));
$title = pht('Edit Subversion Info (%s)', $repository->getName());
$policies = id(new PhabricatorPolicyQuery()) ->setViewer($viewer) ->setObject($repository) ->execute();
$form = id(new AphrontFormView()) ->setUser($viewer) ->appendRemarkupInstructions( pht( "You can set the **Repository UUID**, which will help Phabriactor ". "provide better context in some cases. You can find the UUID of a ". "repository by running `svn info`.". "\n\n". "If you want to import only part of a repository, like `trunk/`, ". "you can set a path in **Import Only**. Phabricator will ignore ". "commits which do not affect this path.")) ->appendChild( id(new AphrontFormTextControl()) ->setName('uuid') ->setLabel(pht('Repository UUID')) ->setValue($v_uuid)) ->appendChild( id(new AphrontFormTextControl()) ->setName('subpath') ->setLabel(pht('Import Only')) ->setValue($v_subpath)) ->appendChild( id(new AphrontFormSubmitControl()) ->setValue(pht('Save Subversion Info')) ->addCancelButton($edit_uri));
$form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) ->setForm($form);
return $this->buildApplicationPage( array( $crumbs, $form_box, ), array( 'title' => $title, 'device' => true, )); }
}