Allow configuration of a "staging area" for each repository
Summary: Ref T8238. This allows configuration of a "staging area" for Git repositories, which is the URI to some Git repository (possibly the same repository). If a staging area is configured, `arc` will push a copy of anything it creates a diff for there (see next revision). This primarily makes handoff to build systems easier. This is a bit leaky and I intend for it to eventually be positioned as a less-preferred solution, but from the perspective of build systems it's the same as the real (virtual ref) solution that I want to build. Test Plan: Ran `arc diff` with various flags, saw appropriate changes copied into the staging area. See also discussion in T8238. Reviewers: btrahan Reviewed By: btrahan Subscribers: cburroughs, epriestley Maniphest Tasks: T8238 Differential Revision: https://secure.phabricator.com/D13019
This commit is contained in:
@@ -30,6 +30,7 @@ final class DiffusionRepositoryEditMainController
|
||||
|
||||
$has_branches = ($is_git || $is_hg);
|
||||
$has_local = $repository->usesLocalWorkingCopy();
|
||||
$supports_staging = $repository->supportsStaging();
|
||||
|
||||
$crumbs = $this->buildApplicationCrumbs($is_main = true);
|
||||
|
||||
@@ -92,6 +93,13 @@ final class DiffusionRepositoryEditMainController
|
||||
$this->buildStorageActions($repository));
|
||||
}
|
||||
|
||||
$staging_properties = null;
|
||||
if ($supports_staging) {
|
||||
$staging_properties = $this->buildStagingProperties(
|
||||
$repository,
|
||||
$this->buildStagingActions($repository));
|
||||
}
|
||||
|
||||
$actions_properties = $this->buildActionsProperties(
|
||||
$repository,
|
||||
$this->buildActionsActions($repository));
|
||||
@@ -157,6 +165,12 @@ final class DiffusionRepositoryEditMainController
|
||||
->addPropertyList($storage_properties);
|
||||
}
|
||||
|
||||
if ($staging_properties) {
|
||||
$boxes[] = id(new PHUIObjectBoxView())
|
||||
->setHeaderText(pht('Staging'))
|
||||
->addPropertyList($staging_properties);
|
||||
}
|
||||
|
||||
$boxes[] = id(new PHUIObjectBoxView())
|
||||
->setHeaderText(pht('Text Encoding'))
|
||||
->addPropertyList($encoding_properties);
|
||||
@@ -609,6 +623,45 @@ final class DiffusionRepositoryEditMainController
|
||||
return $view;
|
||||
}
|
||||
|
||||
|
||||
private function buildStagingActions(PhabricatorRepository $repository) {
|
||||
$viewer = $this->getViewer();
|
||||
|
||||
$view = id(new PhabricatorActionListView())
|
||||
->setObjectURI($this->getRequest()->getRequestURI())
|
||||
->setUser($viewer);
|
||||
|
||||
$edit = id(new PhabricatorActionView())
|
||||
->setIcon('fa-pencil')
|
||||
->setName(pht('Edit Staging'))
|
||||
->setHref(
|
||||
$this->getRepositoryControllerURI($repository, 'edit/staging/'));
|
||||
$view->addAction($edit);
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
private function buildStagingProperties(
|
||||
PhabricatorRepository $repository,
|
||||
PhabricatorActionListView $actions) {
|
||||
$viewer = $this->getViewer();
|
||||
|
||||
$view = id(new PHUIPropertyListView())
|
||||
->setUser($viewer)
|
||||
->setActionList($actions);
|
||||
|
||||
$staging_uri = $repository->getStagingURI();
|
||||
if (!$staging_uri) {
|
||||
$staging_uri = phutil_tag('em', array(), pht('No Staging Area'));
|
||||
}
|
||||
|
||||
$view->addProperty(
|
||||
pht('Staging Area'),
|
||||
$staging_uri);
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
private function buildHostingActions(PhabricatorRepository $repository) {
|
||||
$user = $this->getRequest()->getUser();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user