Improve UX for repository updates
Summary: Fixes T5926. Fixes T5830. Ref T4767. Users currently sometimes have a hard time understanding repository update frequencies. This is compounded by aggressive backoff and incorrect backoff while importing repositories. - Don't back off while importing repositories. This prevents us from hanging at 99.99% for inactive repositories while waiting for the next update. - Back off less aggressively in general, and even more gradually during the first 3 days. This should make behavior around weekends better. - Show update frequency in the UI. - Provide an explicit "update now" button to call `diffusion.looksoon` in a more user-friendly way. - Document how backoff policies work and how to adjust behavior. Test Plan: - Ran `bin/phd debug pulllocal` and verified backoff worked correctly from debugging output. - Clicked "Update Now" to get a hint, reloaded page to see it update. - Read documentation. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T4767, T5830, T5926 Differential Revision: https://secure.phabricator.com/D10323
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
final class DiffusionRepositoryEditUpdateController
|
||||
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();
|
||||
}
|
||||
|
||||
$edit_uri = $this->getRepositoryControllerURI($repository, 'edit/');
|
||||
|
||||
if ($request->isFormPost()) {
|
||||
$params = array(
|
||||
'callsigns' => array(
|
||||
$repository->getCallsign(),
|
||||
),
|
||||
);
|
||||
|
||||
id(new ConduitCall('diffusion.looksoon', $params))
|
||||
->setUser($viewer)
|
||||
->execute();
|
||||
|
||||
return id(new AphrontRedirectResponse())->setURI($edit_uri);
|
||||
}
|
||||
|
||||
$doc_name = 'Diffusion User Guide: Repository Updates';
|
||||
$doc_href = PhabricatorEnv::getDoclink($doc_name);
|
||||
$doc_link = phutil_tag(
|
||||
'a',
|
||||
array(
|
||||
'href' => $doc_href,
|
||||
'target' => '_blank',
|
||||
),
|
||||
$doc_name);
|
||||
|
||||
return $this->newDialog()
|
||||
->setTitle(pht('Update Repository Now'))
|
||||
->appendParagraph(
|
||||
pht(
|
||||
'Normally, Phabricator automatically updates repositories '.
|
||||
'based on how much time has elapsed since the last commit. '.
|
||||
'This helps reduce load if you have a large number of mostly '.
|
||||
'inactive repositories, which is common.'))
|
||||
->appendParagraph(
|
||||
pht(
|
||||
'You can manually schedule an update for this repository. The '.
|
||||
'daemons will perform the update as soon as possible. This may '.
|
||||
'be helpful if you have just made a commit to a rarely used '.
|
||||
'repository.'))
|
||||
->appendParagraph(
|
||||
pht(
|
||||
'To learn more about how Phabricator updates repositories, '.
|
||||
'read %s in the documentation.',
|
||||
$doc_link))
|
||||
->addCancelButton($edit_uri)
|
||||
->addSubmitButton(pht('Schedule Update'));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user